NEWS.md
2024-11-06
test_configuration()
mpn_bristol
with infompn_ryanair
with infompn_elite_mex
with infompn_elite_usa
mpn_senate
mpn_cow
alter(Discipline)
from net_regression()
call2024-09-03
test_permutation()
now uses manynet::to_permuted()
instead of the older manynet::generate_permutation()
syntax2024-07-19
network_reg()
renamed to net_regression()
for consistency2024-07-18
.data
and .graph_context
test_distribution()
to test whether two vectors/distributions are from the same distributiontest_gof()
renamed to test_fit()
to improve readabilitytest_fit()
no longer measures fit against steps where there is no covariancetest_random()
where parameters were passed to manynet::generate_random()
instead of the original object, which is processed more intuitively within manynet::generate_random()
(thanks @RWKrause)test_random()
returns results on edge-conditioned uniform graphs, not sizeggplot2::scale_y_discrete()
network_reg()
now ignores absent ego terms for undirected networks2024-03-06
node_brokering_activity()
and node_brokering_exclusivity()
from Hamilton et al (2020)node_degree()
now returns strength centrality (alpha = 1) for weighted networks by defaultnode_redundancy()
now works for weighted onemode and twomode networks (closed #292)node_effsize()
now works for weighted onemode and twomode networksnetwork_equivalency()
now normalises weighted twomode networks (closed #291)node_brokering()
for identifying brokering roles from brokering activity and exclusivitynode_roulette()
now optimises group diversity based on historical interactions (Lai and Hao 2016)2024-01-25
network_scalefree()
to work even when P scores are not availablenode_fluid()
to work with different versions of igraph
2024-01-24
node_brokerage_census()
and network_brokerage_census()
now treat two-mode networks correctly (closed #35)test_random()
now reverts future plan on exittest_permutation()
now reverts future plan on exitnetwork_reg()
now reverts future plan on exit2024-01-24
network_change()
to measure the Hamming distance between two or more networksnetwork_stability()
to measure the Jaccard index between two or more networksnetwork_spatial()
to measure spatial association (Moran’s I, closes #209)node_deg()
for a non-normalised version of node_degree()
node_degree()
now normalises strength centralitynode_induced()
to measure nodes’ induced betweenness centralitiesnode_flow()
to measure nodes’ flow betweenness centralities (closes #195)node_information()
to measure nodes’ information or current-flow closeness centralities (closes #194)node_multidegree()
to measure the ratio of one type of tie in a multiplex network to anothernode_posneg()
measures the PN centrality of signed networksnode_tie_census()
and node_triad_census()
work with the new multiplex format in manynet (which relies on a “type” tie attribute rather than multiple tie attributes)node_structural_equivalence()
and node_regular_equivalence()
node_fluid()
community detection algorithmnode_roulette()
for identifying groups of nodes that haven’t interacted beforeplay_*()
functions to manynet, including as_diffusion()
and the diffusion tutorialnetwork_reg()
so that specifications that include a ‘sim’ or ‘same’ effect for a variable are encouraged to also include more elementary ‘ego’ and ‘alter’ effectsnetwork_reg()
now ignores the LHS of the formula for uniplex networks2023-12-17
node_is_infected()
to identify infected nodes at given timenode_is_latent()
to identify infected nodes at given timenode_is_recovered()
to identify infected nodes at given timenode_is_fold()
for identifying nodes that are occupying structural foldsis_*()
functions from migraph to avoid unnecessary conflicts with manynet at startupnetwork_hazard()
for calculating the hazard rate for each time point of a diff_model objectnode_adoption_time()
now works with incomplete diffusionsnode_exposure()
now uses node_is_infected()
for more flexibilitynode_thresholds()
now works with incomplete diffusionsplay_diffusion()
node_is_exposed()
and node_exposure()
internallyplay_diffusion()
2023-12-13
node_is_exposed()
function to mark nodes (logical) that are currently exposed to diffusion content in a network.network_reproduction()
function that calculates the R-nought value.network_immunity()
function to calculate the Herd Immunity Threshold for the network.node_exposure()
function to calculate the number of infected/adopting nodes to which each susceptible node is exposed.node_*()
and network_*()
measures.as_diffusion()
function to convert a diffusion event table into a diff_model
object.test_gof()
function for testing goodness-of-fit in diffusion models.autographs()
and autographd()
for diff_model
objects.2023-12-06
node_thresholds()
so that it infers nodes’ thresholds from the amount of exposure they had when they became infected or exposed.node_adoption_time()
and node_adopter()
to return node_member
and node_measure
objects, which makes printing and summarising better.node_member
class.node_member
class.diff_model
object to carry original network data for plotting.play_diffusion()
to forward exposure/contact information to the events table.autographs()
and autographd()
.2023-11-15
node_is_mentor()
for indicating nodes with high indegree.play_segregation()
to sample randomly from those unoccupied options less than the desired threshold.2023-11-08
network_transmissability()
, node_infection_length()
, network_infection_length()
, network_reproduction()
, node_adoption_time()
, node_adopter()
, node_thresholds()
.play_diffusion()
.autographs()
and elaboration for tutorial 7.2023-11-01
2023-10-25
network_richclub()
to return a network’s rich-club coefficient (closed #223)node_core()
now offers eigenvector centrality-based rank selection in addition to degree-centralitymethod = "eigenvector"
node_eccentricity()
, which wraps igraph::eccentricity()
node_neighbours_degree()
, which wraps igraph::knn()
tie_cohesion()
to measure how embedded ties arenode_louvain()
community detection algorithmnode_leiden()
community detection algorithm2023-10-18
2023-10-11
node_optimal()
, node_infomap()
, node_spinglass()
, and node_leading_eigen()
to extend the community detection options available in the packagenode_outdegree()
, node_indegree()
, network_outdegee()
, and network_indegree()
wrappersnetwork_reach()
node_harmonic()
and network_harmonic()
node_pagerank()
plot.node_measure()
now returns a single plot for one-mode networks with a frequency histogram and a density overlaynode_closeness()
and node_betweenness()
in preparation for an igraph deprecation (merci @maelle)test_random()
and test_permutation()
rely on graph dimensions rather than graph order (thank you finding this @rabenton)create_*()
and generate_*()
functions are now in manynet
read_*()
and write_*()
functions are now in manynet
as_*()
and to_*()
functions are now in manynet
is_*()
functions are now in manynet
add_*()
and join_*()
functions are now in manynet
network_nodes()
, node_names()
, and tie_weights()
, are now in manynet
autograph*()
functions are now in manynet
.data
as their first argument; previously it was object
over_time()
and over_waves()
to measure (potentially parallelised) over split graphsnetwork_measures
objectnode_alpha()
for calculating alpha centrality, mostly just a wrapper for igraph::alpha_centrality()
node_power()
for calculating beta or Bonacich centrality, mostly just a wrapper for igraph::power_centrality()
, though also correctly accounts for two-mode networksnode_homophily()
to node_heterophily()
, which is more accurate and in line with the scale’s directionnode_heterophily()
now calculates EI indices in a faster, vectorised form, instead of the older, slower solution that calculated network_homophily()
over all ego networksnetwork_homophily()
to network_heterophily()
network_heterophily()
now ignores missing valuesnetwork_congruency()
is now more explicit about its data expectationsk_strict()
, k_elbow()
and k_silhouette()
are now exported and documentedplay_segregation()
for playing Schelling segregation models with various parametersdiff_model
and diffs_model
plotting irregularitiescluster_concor()
ison_
data to manynet
read_matrix()
for importing CSVs of adjacency/incidence matricesread_dynetml()
for importing DynetML .xml files (closed #261)as_tidygraph()
for merging nodelists and edgelistsas_siena()
read_pajek()
where multiple networks/ties were causing an issue for partition assignmentplay_diffusion()
relating to latency inversionis_aperiodic()
for testing whether a network is aperiodic (the greatest common divisor for all cycles in the network is 1)node_is_max()
and node_is_min()
now take a “rank” argument for selecting more than the first ranked maxima or minimato_components()
to return the components of a network as a list of networksto_egos()
to return the ego networks of a network as a list of networksto_subgraphs()
to return attribute-based subgraphs as a list of networksnetwork_richness()
and node_richness()
for calculating the richness (a common diversity measure) of an attribute in a networkplay_diffusion()
to include more compartment and transition optionsplay_diffusions()
for running a diffusion model multiple timesplay_learning()
for running a DeGroot learning modelnetwork_reg()
now declares the reference category for nominal variablesautographs()
for autoplotting lists of networksmutate()
now works with igraph objectsnode_is_random()
for selecting n nodes at randomplay_diffusion()
modelgenerate_random()
to_mode1()
and to_mode2()
)to_redirected.igraph()
where routing through an edgelist caused problemsnetwork_scalefree()
for returning power law alpha/exponentnode_brokerage_census()
and network_brokerage_census()
for counting Gould-Fernandez brokerage rolescreate_lattice()
now conforms to other create_*()
functions in how it interprets "n"
"n"
for a one-mode network, it will create a transitive lattice of as even dimensions as possibleis_eulerian()
for a logical expression of whether the network has an Eulerian pathnetwork_smallworld()
now takes a method argument for different ways of calculating a small-world coefficientnode_diversity()
for calculating heterogeneity among each nodes’ ego networknode_homophily()
for calculating homophilous ties among each nodes’ ego networknode_reciprocity()
for calculating each node’s reciprocitynode_transitivity()
for calculating each node’s transitivity/clusteringnode_walktrap()
node_edge_betweenness()
node_fast_greedy()
to_twomode()
now returns an undirected networkto_anti()
for obtaining the complement of the given networkis_perfect_matching()
for a logical expression of whether the maximum matching of a network is also perfectnode_is_core()
for a logical vector of which nodes are members of the corenode_degree()
now has an additional parameter for trading off between degree and strength in the case of weighted networksnode_power()
for Bonacich power centrality for both one- and two-mode networks (closed #193)autographr()
tests to work with new version of ggraph (closed #247, thanks @henriquesposito)graph_*()
functions now renamed to network_*()
for terminological consistencyp2visualization
vignettegraph_blau_index()
to graph_diversity()
graph_ei_index()
to graph_homophily()
autographr()
’s “node_group” argumentas_graphAM()
methods for all migraph-consistent object classes so {Rgraphviz}
can be used effectivelyas_igraph()
, as_tidygraph()
, and as_network()
methods for RSiena sienaData objects (thanks @JaelTan, closed #94)as_edgelist()
and as_matrix()
methods for network.goldfish
class objects"twomode"
argument in as_matrix()
is now NULL
by default, allowing both one-mode and two-mode coercionto_mode1()
and to_mode2()
now take an extra argument to produce weighted projections by different “similarity” measuresto_matching()
methods to transform a two-mode network or network with some other (binary) “mark” attribute into a network of matching tiesto_main_component()
to to_giant()
to be more space efficientto_blocks()
(closed #242)to_blocks()
where NA blocks couldn’t be subsequently coercedto_blocks()
, to_subgraph()
, and to_ties()
are now S3 methods, returning objects of the same class as givento_onemode()
method for matricesto_twomode()
methods for igraph, tidygraph, and networkto_named()
, to_redirected()
, to_uniplex()
, and to_unsigned()
to_undirected()
and to_uniplex()
to_uniplex()
to_unweighted()
didn’t respect the “threshold” specifiednode_mode()
couldn’t produce a “mark” class objectis_twomode()
where labelling information was being ignoredgraph_core()
now runs node_core()
(see below) if no “membership” vector is providednode_core()
for partitioning nodes into core and periphery membershipsk_strict()
network_reg()
network_reg()
autographr()
to improve future debugging and developmentautographr()
now rotates labels for partitioning layouts, including “concentric”, so that they are readable and overlap lessgglineage()
to use “alluvial” layout and better position nodes on the x-axismpn_cow_igo
now includes “polity2” scoresison_
and mpn_
data documentation (closed #237)network.goldfish
objects (and linked events and nodelists) to migraph-compatible objects (closed #96)add_node_attributes()
to add_node_attribute()
and add_edge_attributes()
to add_tie_attribute()
is_*()
are now considered graph-level ‘marks’node_is_isolate()
for marking isolatesnode_is_max()
, node_is_min()
, tie_is_max()
, tie_is_min()
for converting ‘measures’ into ‘marks’graph_motif
(fixed #234)cluster_concor()
and cluster_hierarchical()
are now exportedautographr()
no longer requires “highlight_measure” and “identify_function” arguments as users can now convert ‘measures’ to ‘marks’ and use these for “node_color” or “edge_color”@format
for more consistent documentationison_brandes2
dataset, a two-mode version of the original one-mode datasetmpn_cow_trade
and mpn_cow_igo
datasets (thanks @JaelTan)mpn_elite_mex
node_reach()
for calculating reach centrality (closed #196)autographr()
, plot.member()
, and node_quad_census()
respectively@family
tags for improved cross-referencingcreate_
and generate_
functions now:n
passed an existing networkcreate_tree()
, generate_smallworld()
, generate_scalefree()
create_
functions can now take a membership vector or split into equal partitions by defaultcreate_components()
no longer accepts a number of components, instead relying on the membership vectorcreate_core()
for creating core-periphery graphsgenerate_random()
now inherits attributes from any networkto_
functions useful for working with networks of different typesto_redirected()
for adding or swapping direction to networks (closed #219)to_blocks()
for reducing a network down by a membership vector; blockmodel()
and reduce_graph()
are now deprecatedto_multilevel.igraph()
now only works on two-mode networks; returns the original network if passed a one-mode networkis_
functionsis_signed.data.frame()
and is_signed.matrix()
now rely on new helper is.wholenumber()
rather than misleading is.integer()
is_directed.igraph()
and is_directed.matrix()
now return FALSE for two-mode networksis_connected()
now returns result for strong components if directed and weak components if undirectedas_igraph.data.frame()
now infers third column as weightedge_multiple()
, edge_loop()
, edge_reciprocal()
moved from measuresedge_bridges()
"edge_measure"
S3 class has been added, along with print()
and plot()
methodssummary.node_measure()
method for printing a summary by a membership vector; summarise_statistics()
is now deprecated"graph_measure"
class resultsgraph_components()
now calculates strong components for directed networks else weak componentsprint.graph_measure()
now correctly labels two-mode results where a vector is givengraph_smallworld()
graph_core()
for calculating correlation of an observed network to a core-periphery network of the same dimensions (closed #39)graph_factions()
for calculating correlation of an observed network to a component network of the same dimensions (closed #40)graph_modularity()
for calculating modularity of an observed network, including modularity for two-mode networks (closed #144)node_constraint()
node_bridges()
, node_redundancy()
, node_effsize()
, node_efficiency()
, node_hierarchy()
node_betweenness()
no longer needs nobigint
argument; just uses default from igraph
"node_motif"
S3 class for the output of node_*_census()
functionsprint.node_motif()
for tibble-printing of census resultssummary.node_motif()
to summarise censuses by a membership vector, replacing group_tie_census()
and group_triad_census()
, which are now deprecated"graph_motif"
S3 class for the output of graph_*_census()
functionsnode_path_census()
for returning the shortest distances from each node to every other node (closed #222)node_tie_census()
now creates unique column names"node_member"
S3 class for vectors of nodes’ cluster membershipsplot.node_member()
replaces ggtree()
node_equivalence()
for identifying nodes’ membership in classes equivalent with respect to some arbitrary motif census"hierarchical"
and "concor"
now options for cluster
within node_equivalence()
; blockmodel_concor()
is now deprecated (closed #123)"elbow"
now an option for k
selection within node_equivalence()
; ggidentify_clusters()
is now deprecated"silhouette"
and "strict"
options for k
selection (closed #197)k
to be defineddistance
passed to stats::dist
that defines the distance metric (closed #36)range
constrains the number of k
evaluated by "elbow"
and "silhouette"
to improve parsimony and avoid long elapsed timesnode_automorphic_equivalence()
for identifying nodes’ membership in automorphically-equivalent classes (closed #187)node_structural_equivalence()
replaces cluster_structural_equivalence()
node_regular_equivalence()
replaces cluster_regular_equivalence()
node_coreness()
for nodes’ k-core score (closed #200)node_strong_components()
and node_weak_components()
for more direct calls; node_components()
now calculates strong components for directed networks else weak components"graph_test"
S3 class replaces "cug_test"
and "qap_test"
plot.graph_test()
replaces plot.cug_test()
and plot.qap_test()
print.graph_test()
methodplot.matrix()
now plots adjacency/incidence matrices with sorting and horizontal/vertical lines if a membership vector is provided, effectively replacing plot.block_model()
autographr()
can highlight nodes that max (by default) some measure (thank you, @BBieri, closed #224)layout_tbl_graph_stressgrid()
as an extra optionggatyear()
is deprecated{roxytest}
m
argument into p
for generate_random()
, p
can now be passed an integer to indicate the number of ties the network should haveto_edges()
to be ~26 times faster on averageto_edges()
to_subgraph()
now instead of dplyr::filter()
or strain()
"measure"
class "node_measure"
and added "graph_measure"
class with print methodnormalized
is now the second argumentdirected
and weights
arguments have been removed and are now imputed, if this is undesired please use to_*()
firstnode_degree()
now calculates strength centrality if network is weightednode_eigenvector()
and graph_eigenvector()
both work with two-mode networksedge_degree()
and edge_eigenvector()
, which both just apply the corresponding nodal measure to the edge graphedge_mutual()
renamed to edge_reciprocal()
graph_assortativity()
directed
and direction
arguments in some functions; whereas directed
is always logical (TRUE/FALSE), direction
expects a character string, e.g. “in”, “out”, or “undirected”generate_permutation()
now has an additional logical argument, with_attr
, that indicates whether any attributes from the original data should be passed to the permuted objectcreate_*()
functions now accept existing objects as their first argument and will create networks with the same dimensionsread_pajek()
now imports nodal attributes alongside the main edgesread_ucinet()
now enjoys clearer documentationas_*()
functions now retain weights where present; if you want an unweighted result, use is_unweighted()
afterwardsas_edgelist.network()
now better handles edge weightsas_matrix.igraph()
now better handles edge signsis_twomode()
, is_directed()
, is_weighted()
, is_labelled()
, is_signed()
, is_multiplex()
, is_complex()
, and is_graph()
as_edgelist()
, and to_unweighted()
, and improved the data.frame method for as_matrix()
to_named()
and to_unsigned()
to_edges()
for creating adjacency matrices using a network’s edges as nodesproject_rows()
and project_cols()
functions to to_mode1()
and to_mode2()
, which is both more consistent with other functions naming conventions and more generic by avoiding the matrix-based row/column distinctionnode_mode()
, which returns a vector of the mode assignments of the nodes in a networkedge_signs()
, which returns a vector of the sign assignments of the edges in a networkautographr()
works and how ggraph extends thisautographr()
now incorporates ggidentify()
functionality (closed #150)ggatyear()
measure
class and directed most node_*()
functions to create objects of this classggdistrib()
and offers “hist” and “dens” methods for histograms and density plots respectivelyedge_betweenness()
wraps igraph’s function of the same nameedge_closeness()
measures the closeness centrality of nodes in an edge adjacencynode_cuts()
identifies articulation points (nodes) in a networkedge_bridges()
identifies edges that serve as bridges in a networkgraph_cohesion()
measures how many nodes would need to be removed to increase the number of components (closed #192)graph_adhesion()
measures how many edges would need to be removed to increase the number of componentsgraph_length()
measures the average path lengthgraph_diameter()
measures the longest path lengthnode_smallworld()
and added graph_smallworld()
, which works with both one- and two-mode networks (fixed #214)node_quad_census()
network_reg()
’s formula-based systemnetwork_reg()
can now handle binary and multiple categorical variables (factors and characters, closed #211);network_reg()
can now manage interactions specified in the common syntax; var1 * var2
expands to var1 + var2 + var1:var2
(closed #163)dist()
and sim()
effects have been added (closed #207)network_reg()
now employs logistic regression to estimate a binary outcome and linear regression to estimate a continuous outcome (closed #184)network_reg()
now uses Dekker et al’s semi-partialling procedure by default for multivariate specifications (closed #206), defaulting to y-permutations in the case of a single predictor (closed #208)network_reg()
, relying on furrr for potential parallelisation and progressr for progress reports (closed #185, #186)test_random()
and test_permutation()
, relying on furrr for potential parallelisation and progressr for progress reports; note that nSim
argument now times
(closed #199)netlm
and netlogit
class objects (closed #183)netlm
and netlogit
class objects (closed #216), which plots the empirical distribution for each test statistic, indicates percentiles relating to common critical values, and superimposes the observed coefficientscug_test
and qap_test
class objects, which plots the empirical distribution, highlighting tails beyond some critical value (closed #213), and superimposing the observed coefficient and, possibly, 0print.block_model()
replaces print.blockmodel()
plot.block_model()
replaces plot.blockmodel()
ison_southern_women
instead of southern_women
ison_brandes
instead of brandes
ison_networkers
instead of ison_eies
ison_algebra
instead of ison_m182
ison_adolescents
instead of ison_coleman
mpn_elite_mex
is extended with data from Pajek and with help from Frank Heberison_networkers
becomes named with information from tnet
mpn_*
and ison_*
datasets, including references/sourcescluster_structural_equivalence()
for isolatesadd_
functionsis_
methods: is_multiplex()
, is_uniplex()
, is_acyclic()
edge_
functions to identify edges by properties: edge_mutual()
, edge_multiple()
, edge_loop()
read_nodelist()
and read_edgelist()
as_network()
method to convert correctly form an igraph to a network object.ggraphgrid()
documentationread_edgelist()
and read_nodelist()
to readxl to avoid Java dependencywrite_edgelist()
and write_nodelist()
to avoid Java dependencyas_network()
, as_igraph()
, and is_directed()
read_
and write_
functions and updated documentationread_edgelist()
for importing edgelists from Excel and csv filesread_pajek()
for importing .net and .paj fileswrite_edgelist()
, write_nodelist
, write_pajek()
, and write_ucinet()
for exporting into various file formats (Excel, csv, Pajek, and UCINET)is_graph()
to check if an object is a graph or notas_network()
to retain attributesas_
and to_
functionsas_
functions to convert from dataframes instead of tibblesas_igraph()
functionto_undirected()
function to work with network objectsto_main_component()
function so that it retains vertex attributes in network objectsedge_attribute()
to grab a named edge attribute from a graph/networkto_unweighted()
to prevent conversion of network object into igraph object when deleting weightssummarise_statistics()
network_reg()
exampleautographr()
as_matrix()
method for networks now works with two-mode and weighted networksas_igraph()
method for matrices now checks for weights independently of coercionas_igraph()
method for networks now works with two-mode and weighted networksas_network()
method for matrices now works with two-mode and weighted networksas_network()
method for edgelists, igraph, and tidygraphs now works with weighted networksto_unnamed()
method for edge liststo_simplex()
method for matricesto_main_component()
method for networksto_multilevel()
method for matricesmutate_edges()
now coalesces rows of edgesgraph_blau_index()
generate_permutation()
and thus test_permutation()
netlm()
to network_reg()
to avoid frustrating conflictsnetwork_reg()
now accepts migraph-consistent objectsnetwork_reg()
now accepts formula terms such as ego()
, alter()
, and same()
generate_permutation()
which takes an object and returns an object with the edges permuted, but retaining all nodal attributesgenerate_random()
also work with an existing object as input, in which it will return a random graph with the same dimensions and densitygraph_blau_index()
graph_ei_index()
test_random()
(defunct test_cug()
)autographr()
arguments take variable names in quotation marksnode_names()
for quickly accessing node labelsnode_attribute()
for quickly accessing a certain nodal attributeedge_weights()
for quickly accessing edge weightsgraph_nodes()
for quickly accessing a count of nodes in the graph, note that for two-mode networks this will be a vector of length 2graph_edges()
for quickly accessing a count of edges in the graphgraph_dimensions()
is currently a copy of graph_nodes()
add_node_attributes()
for adding particular nodal attributesadd_edge_attributes()
for adding edges from another graphcopy_edge_attributes()
for copying all nodal attributes from another graphgraph_blau_index()
for summarising diversity of an attribute in a network or groupgraph_ei_index()
for summarising diversity of an attribute over a network’s tiesnode_quad_census()
, especially useful for two-mode blockmodellinggraph_mixed_census()
test_random()
carries out a conditional uniform graph (CUG) testtest_permutation()
carries out a quadratic assignment procedure (QAP) testaes()
from ggplot2
node_shape
option to autographr()
as_edgelist()
methods for converting other objects into edgeliststo_unnamed()
on ‘network’ objects now operates on them directlyto_
documentation significantlyto_onemode()
that was tripping blockmodel()
on networks that are already one-modeis_connected()
to test whether network is connected, method =
argument can be specified as weak
or strong
create_tree()
and create_lattice()
, and made create_star()
a bit faster for one-mode networksgenerate_smallworld()
and generate_scalefree()
, though only for one-mode networks currently=2
graph_dyad_census()
for more graph profile optionsblockmodel_concor()
when an object was of class ‘igraph’ but not ‘tbl_graph’blockmodel()
was treating two-mode networks"elbow"
and "strict"
methods for k-identificationggidentify_clusters()
for speedas_matrix()
where availablegraph_equivalency()
into the same for two-mode networks and graph_congruency()
for three-mode (two two-mode) networksgraph_reciprocity()
methodgraph_components()
and node_components()
node_tie_census()
output so that it’s consistent with node_triad_census()
and future node_census functionscluster_triad_census()
to group_triad_census()
group_tie_census()
autographr()
for plotting convex/concave hullsggraphgrid()
a set of layout functions:layout_tbl_graph_frgrid()
or autographr(object, "frgrid")
for snapping Fruchterman-Reingold to a gridlayout_tbl_graph_kkgrid()
or autographr(object, "kkgrid")
for snapping Kamada-Kawai to a gridlayout_tbl_graph_gogrid()
or autographr(object, "gogrid")
for snapping graph optimisation to a gridggraphgrid()
has been deprecatedas_igraph()
to_uniplex()
was not returning a weighted graphblockmodel()
was not retaining node names in all parts of the object structureplot_releases()
to another packageis_signed()
to logically test whether the network is a signed networkto_unsigned()
for extracting networks of either “positive” or “negative” ties from a signed networktbl_graph
methods for all other to_
functionsactivate()
from tidygraph
autographr()
plot_releases()
from this packagegraph_balance()
to be much faster, following David Schoch’s signnet package (see that package for further extensions)ison_marvel_relationships
to be a double (-1
/1
) to be compatible with the new graph_balance()
and signnet
to_main_component()
to extract the main component of a networkto_onemode()
for moving to multimodal igraph objectsto_uniplex()
method to delete edge types and their edges from multiplex networksto_simplex()
method to delete loops from a networkto_named()
method for randomly naming unlabeled networksison_mm
, ison_mb
, ison_bm
, and ison_bb
projection illustration dataison_karateka
community detection illustration dataison_marvel_teams
and ison_marvel_relationships
datasetsison_m182
dataset of friends, social and task ties between 16 anonymous studentsadolescent_society
dataset to ison_coleman
for consistencygraph_eigenvector()
for one mode networksgraph_balance()
for measuring structural balancenode_tie_census()
, node_triad_census()
, cluster_triad_census()
, and graph_triad_census()
graph_clustering()
into the cohesion measures graph_density()
, graph_reciprocity()
, graph_transitivity()
, and graph_equivalence()
node_smallworld()
to use separated cohesion measuresblockmodel()
which masks its sna namesake but has the advantages of working with two-mode networks and retaining node names where availablecluster_structural_equivalence()
and cluster_regular_equivalence()
as bases for blockmodellingreduce_graph()
for creating a network from a blockmodelautographr()
for plotting graphs with sensible defaultsggraphlabel()
since core functionality now provided by autographrggidentify()
to identify the node with the highest value of a specified node-level measureggatyear()
for subsetting and plotting edgelists at yeargglineage()
to return a graph colored according to lineageggtree()
for neatly visualising hierarchical clustersggidentify_clusters()
for identifying which number of clusters is most appropriate following the elbow methodggraph::theme_graph()
present in a few different visualisation functionsbrandes
dataset for teaching centrality measuresadolescent_society
dataset for teaching friendship paradoxread_edgelist()
for importing Excel-created edgelists directlyggraphlabel()
for one-function (1F) plotting label-based network graphsggevolution()
for 1F-plotting begin/end graph comparisonsggraphgrid()
for 1F snap-to-grid graph layouts based on Fruchterman-Reingold or Kamada-Kawaiggidentify()
for 1F identifying nodes with maximum scores based on some arbitrary functionto_undirected()
for symmetrising networks of all typesto_
functions S3 methodsClosed #100 by converting as_
coercion functions to S3 methods
as_matrix()
weightingas_tidygraph()
Fixed bug in as_matrix()
with frame matrix by dropping (rarely necessary) functionality
as_
functionsbinarise()
to to_unweighted()
to_unnamed()
for unlabelling networksbinarise()
for unweighting networksas_tidygraph()
when passed a tbl_graph directlyUpdated README
Added CITATION
details
Separated coercion (previously conversion) and manipulation
Added some more inter-class coercion tests
Fixed bug in how as_network()
sometimes coerced two-mode networks into much larger dimension matrices
Added more is_
tests for class-independent property tests
is_weighted()
is_directed()
is_labelled()
Added @csteglich ’s read_ucinet()
and write_ucinet()
functions
read_ucinet()
offers a file-picker when file path unknownread_ucinet()
now imports to an igraph-class object by default, with an argument to allow other alternativeswrite_ucinet()
works with all migraph-compatible objectsUpdated mpn_bristol
documentation
Added create_star()
function
directed =
argumentcreate_
documentationRenamed sample_affiliation()
to generate_random()
generate_random()
to be able to generate random one- or two-mode networks2021-04-11
as_network()
to coerce objects into network class2021-03-03
jhollway/
to snlab-ch/
organisationElaborated documentation for the remainder of the datasets
Closed #18 by adding blockmodel_concor()
for employing the CONCOR algorithm to blockmodel both one-mode and two-mode networks
print.blockmodel()
method in the sna package that also prints blockmodel results for two-mode networks consistently2021-02-06
as_matrix()
function to coerce objects into an adjacency or incidence matrix classas_igraph()
function to coerce objects into an igraph graph classas_tidygraph()
function to coerce objects into an tidygraph tbl_graph classis_twomode()
function to check whether network is two-mode on all object typesRenamed several datasets and elaborated their documentation
mpn_mexicanpower
was renamed to mpn_elite_mex
mpn_powerelite
was renamed to mpn_elite_usa_advice
mpn_opensecrets
was renamed to mpn_elite_usa_money
Reconstructed several creation functions to take universal (one-mode/two-mode) input: specifying n = 5
creates a one-mode network, while specifying n = c(5, 5)
creates a two-mode network
create_empty()
create_complete()
create_ring()
to create rings of varying breadthcreate_components()
(renamed from create_silos()
) to create networks with varying numbers of componentssample_affiliation()
for random two-mode networkscreate_match()
and create_nest()
Renamed centrality_
functions with node_
prefix and ensured they all also wrapped one-mode measures
centrality_degree()
renamed to node_degree()
centrality_closeness()
renamed to node_closeness()
centrality_betweenness()
renamed to node_betweenness()
node_eigenvector()
Re-added node_constraint()
for calculating Burt’s constraint measure for one- and two-mode networks
Re-added node_smallworld()
for calculating Watts-Strogatz measure of small-worldness for two-mode networks
Closed #32 by re-adding centralization functions for one- and two-mode networks
graph_degree()
for degree centralizationgraph_closeness()
for closeness centralizationgraph_betweenness()
for betweenness centralizationRe-added graph_clustering()
for calculating (see Knoke et al 2021):
plot.igraph()
with sensible defaults for two-mode networks2021-01-08
project_rows()
and project_cols()
to make it easier to project two-mode networks in different formats (matrix, igraph, tidygraph) into projected versions in the same formatas_incidence_matrix()