- Updated documentation on "mnet" class objects
- Improved
print.mnet()
to print sections more prettily and accommodate changes when present - Added
print_all()
for printing infinite rows - Moved
play_diffusions()
to{migraph}
(but notplay_diffusion()
) - Improved
play_diffusion()
to return an 'mnet' class object with changes instead of a 'diff_model' object with hidden network- Older behavior can still be obtained using
old_version = TRUE
- Older behavior can still be obtained using
- Improved
write_*()
functions by printing picked pathnames to the console
- Added
as_changelist()
for extracting changelists from 'mnet' objects - Added
as_diffusion.mnet()
for maintaining backward compatibility for diffusion measures - Added
as_tidygraph.networkDynamic()
andas_igraph.networkDynamic()
for coercing 'networkDynamic' objects into 'mnet', 'tidygraph', and 'igraph' objects - Added functions for adding and working with network changes, i.e. changes to network nodes
- Added
add_changes()
for adding changes to a network, including checks and imputing activity and susceptibility - Added
mutate_changes()
to mutate changes - Added
select_changes()
to select change variables - Added
filter_changes()
to filter changes - Added
collect_changes()
to collect changes up to a time point - Added
apply_changes()
to apply collected changes to a time point
- Added
- Added
to_time()
for scoping a longitudinal network to a time point, including nodal and/or tie changes - Added
select_nodes()
for selecting only some nodal variables - Added
mutate_net()
for working with network information
- Added
is_changing()
for identifying networks with a change component - Added
node_is_mean()
for identifying typical nodes - Updated
node_is_*()
diffusion marks to work with new .data output - Internally added expect_mark test helper
- Added
net_strength()
for measuring the number of ties that would need to be removed from a network to increase its number of components - Added
net_toughness()
for measuring the number of nodes that would need to be removed from a network to increase its number of components - Moved
over_*()
to{migraph}
- Updated
node_*()
diffusion measures to work with new .data output - Improved
net_modularity()
by informing users when a bipartition is used - Added
net_waves()
for measuring the number of waves in a network
- Renamed
net_hazard()
tonet_by_hazard()
- Updated
node_by_*()
diffusion motifs to work with new .data output
- Updated
fict_potter
with composition changes - Renamed
ison_starwars
tofict_starwars
, updating it with composition changes and additional coding - Added
irps_911
network data on 9/11 hijackers and associates
- Updated 'community' tutorial with guidance on
node_in_community()
- Updated 'position' tutorial with guidance on
tie_is_bridge()
andnode_bridges()
- Moved 'diffusion' tutorial to
{migraph}
to help with dependencies
- Fixed bug in
to_waves()
where result was unordered
graphr()
now uses categorical palettes (effectively closing #60)
- Added
net_correlation()
for calculating the product-moment correlation between networks - Improved speed of make_network_measure by retrieving single call at parent level
- Fixed miscellaneous documentation issues, re roxygen
- Separated out the data sections in pkgdown
- Added
to_simplex.data.frame()
andto_simplex.network()
- Fixed bug in
is_aperiodic()
where it would not work in tutorial chunks
- Added
over_membership()
for obtaining summary statistics by a membership vector
- Fixed data pointers in several tutorials
- Added glossary items to diffusion tutorial
- Improved user information in the console
- manynet cli functions now inherit parent frame
- Added manynet cli functions for success and progress along, seq, and nodes
- Improved testing architecture
- Moving to nested testthats
- Added custom testthat function for expecting values and ignoring dimension names
- Added some names to created networks (
create_ego()
,create_empty()
,create_filled()
,create_ring()
,create_star()
,create_lattice()
)
- Fixed how
as_matrix()
handles signed networks - Added
as_nodelist()
for extracting nodelists from networks into tibbles - Added
to_cosine()
- Dropped
to_galois()
until it can be refactored - Split reformatting documentation into format, reformat, and deformat groups of functions
- Added
to_signed()
for adding signs to networks - Added
to_weighted()
for adding weights to networks
- Added
- Fixed default color ordering so that red is the highlight
- Fixed bug in
graphr()
where line types were inferred incorrectly - Improved
graphr()
so that layouts can now besnap
ped to a grid, mileage may vary - Improved theme handling so that it is set globally (WIP)
- Added highlight themes
- Added background themes
- Added categorical themes
- Improved configurational layouts
- Added dyad, pentad, and hexad layouts to configurational layouts
- Renamed quad layout to tetrad layout
- Added
node_is_pendant()
for identifying pendant nodes - Added
node_is_neighbor()
for identifying adjacent nodes - Added
tie_is_imbalanced()
for identifying ties in imbalanced configurations
- Added
summary.network_measure()
to return z-scores and p-values for measures - Added
node_vitality()
for measuring closeness vitality centrality - Fixed #98 by dropping scale and normalization for
node_eigenvector()
- Improved community detection options for new users
- Community detection algorithms now reformat networks as necessary or suggest that it be used on only the giant component
- Added
node_in_community()
which runs through most salient community detection algorithms to find and return the one with the highest modularity - Updated documentation on resolution parameters
- Improved
node_in_regular()
to inform user which census is being used - Renamed
node_by_quad()
tonode_by_tetrad()
to be more consistent with Greek origins- Restored and updated documentation about the various configurations
- Added
summary.network_motif()
which returns the z-scores for the motif scores based on random or configurational networks, traces progress - Fixed bug in
plot.network_motif()
where motif names were not identified correctly, internal make_network_motif now inherits call information
- Added
cluster_cosine()
for another equivalence option - Added internal documentation for depth_first_recursive_search
- Improved how
run_tute()
fuzzy matched so that insertions are not as costly - Improved tutorials with glossary architecture
- Added
gloss()
,clear_glossary()
, andprint_glossary()
for adding glossaries to tutorials
- Added
- Updated tutorials
- Updated community, position, and topology tutorials with glossaries, free play sections, and gifs
- Fixed miscellaneous issues in these tutorials
- Added faction section to community tutorial
- Added
irps_wwi
, a dynamic, signed network - Renamed
ison_blogs
toirps_blogs
, added info - Renamed
ison_books
toirps_books
, added info - Renamed
ison_usstates
toirps_usgeo
, added info - Renamed
ison_friends
tofict_friends
, added info and fixed directed issue - Renamed
ison_greys
tofict_greys
, added info - Renamed
ison_lotr
tofict_lotr
, added info - Renamed
ison_thrones
tofict_thrones
, added info and some additional nodal attributes - Renamed
ison_potter
tofict_potter
, added info and combined waves into single object
- Fixed errors when testing without
{concaveman}
- Fixed errors when plotting some examples without
{ggdendro}
- Fixed errors when testing on extended features and Suggested packages not available
- Fixed
thisRequires()
bug by testing for interactivity - Dropped brokerage census examples
- Improved
to_ego()
andto_egos()
to specify direction
- Fixed bug in
graphr()
where user not informed about{concaveman}
dependency - Fixed
graphr()
examples
- Updated all tutorials with different themes to make them more distinctive
- Updated centrality tutorial with gifs
- Updated visualisation tutorial with a few extras
- Added
to_dominating()
for extracting the dominating tree of a given network
- Reworked
graphr()
to make function more concise and consistent (thanks @henriquesposito)- This allows new functionality and improves debugging moving forward
- Updated closeness centrality documentation
- Improved
node_eccentricity()
to allow normalisation, appear in closeness documentation - Added
node_stress()
as a new betweenness-like centrality measure - Added
node_leverage()
as a new degree-like centrality measure
- All
read_*()
now print the command used to the console if the (default) file.choose() is used - Added
read_gml()
- Updated references, structure, and DOIs to make and modify documentation
- Updated references, structure, and DOIs to centrality, diffusion, and other measures, as well as to marks, motifs, memberships, and models
- Added more documentation on
node_power()
- Added
ison_dolphins
- Added
ison_books
- Added
ison_blogs
- Added progress updates, information, and unavailability errors to several functions
- These can be silenced by setting
options(manynet_verbosity ="quiet")
- Where a feature is unavailable, users are directed to the Github issues page
- These can be silenced by setting
- Added console theme to color the startup and various warning or info messages
- Added
create_ego()
for collecting ego networks through interviews, including arguments for:- Indicating whether a roster should be used, otherwise follows a name generator approach
- Indicating whether nodes should be interpreted, i.e. nodal attributes collected
- Indicating whether ties between alters should be requested
- Added
create_motifs()
for creating networks that correspond to the isomorphic subgraphs of certain size and format
- Improved
print.mnet()
- Prints multiplex types if available
- Prints both nodesets for two-mode networks
- Added
add_info()
for adding grand info to tidygraph objects- This includes the name of the network, node sets and ties, DOI, year and mode of collection
- Fixed
to_unweighted()
so that it passes through unweighted networks correctly
- Added
set_manynet_theme()
to set theme (re #60), but not yet fully implemented
- Improved
is_multiplex()
to ignore "name" tie attributes
- Added
node_authority()
andnode_hub()
centrality measures - Added
node_equivalency()
for calculating four-cycle closure by node - Extended
net_equivalency()
to one-mode networks
- Fixed
node_in_equivalence()
to use census directly
- Added plot methods for network_motif and node_motif classes that use
create_motifs()
- Added
node_by_dyad()
for node level dyad census - Added
net_by_quad()
for network level quad census - Fixed
node_by_quad()
to avoid{oaqc}
dependency (#89), more flexible but slower - Fixed
print.node_motif()
to convert to tibble and add modes and names where available only upon print- The underlying object is still a matrix, used for equivalence and blockmodelling
- Updated
ison_southern_women
with grand info - Updated
ison_laterals
with reordered nodes
- Added beautiful message on startup
- Depends on
{cli}
- Reports version number
- Offers different suggestions each time it is loaded
- Can be silenced using
suppressPackageStartupMessages()
- Depends on
- Improved error warnings,
stop()
replaced bycli::cli_abort()
- Improved website structure
- Structured make_, manip_, map_, mark_, measure_, and model_ documentation
- Improved function overview layout for measures
- Updated Github Actions scripts
- Updated renaming and releasing binaries (thanks @auzaheta)
- Using actions/download-artifact@v4 to address dependabot security warning
- Using actions/upload-artifact@v4
- Removed
{minMSE}
dependency - Moved
{roxygen2}
dependency to Config/Needs/build - Dropped unnecessary
{grDevices}
and{png}
dependencies - Dropped unnecessary
{network}
reexports - Using globalVariables
- Improved
run_tute()
andextract_tute()
to look for installed packages and report progress
- Added
read_cran()
for creating networks of package dependencies on CRAN- Gathers dependency graph for whole CRAN by default, but can also trace successive outgoing dependencies from a single package (speed increase depends on the package, but is nearly 9x faster for
{manynet}
) - Also gathers nodal information about whether compilation is required
- Gathers dependency graph for whole CRAN by default, but can also trace successive outgoing dependencies from a single package (speed increase depends on the package, but is nearly 9x faster for
- Added
generate_man()
for generating dyad census conditional uniform graphs - Fixed #86 by making sure igraph::sample_islands in
generate_islands()
only takes a single integer and not a vector
- Improved
as_tidygraph()
to add an additional class 'mnet' that is used for prettier printing- Uses
make_mnet()
(internally) for future-proofing print.tbl_graph()
renamed toprint.mnet()
print.mnet()
uses 'grand' data if available
- Uses
- Improved
bind_ties()
to be more flexible about the input it accepts, converting all input into the required edgelist - Added
to_ego()
for obtaining a single neighbourhood - Added tbl_graph and network methods for
delete_nodes()
anddelete_ties()
- Added examples for
add_ties()
anddelete_ties()
in documentation - Fixed bug in
to_unnamed.igraph()
when used with already unlabelled networks
- tie_marks are now named vectors
- Printing vectors no longer requires unique names
- Added
tie_is_path()
for tracing the ties on a particular path - Added
tie_is_triplet()
for returning all the ties that are members of transitive triplets - Added
tie_is_forbidden()
for identifying ties in forbidden triads - Improved
tie_is_transitive()
efficiency, now only retrieves the edgelist once - Improved
is_aperiodic()
to remove{minMSE}
dependency and offer a progress bar if it takes longer than 2 seconds - Fixed bug in
tie_is_triangular()
to do with altpath naming
- tie_measures are now named vectors
- Added
node_distance()
for measuring the distance from or to particular nodes - Fixed #84 related to how
node_degree()
processed isolates in calculating strength in weighted networks
- Updated all
ison_
data with newas_tidygraph()
- Added 'grand' data to
ison_adolescents
as a test - Added
ison_thrones
on kinship arcs between Game of Thrones characters, with 'grand' data - Consolidated
ison_monastery_
data intoison_monks
, a single multiplex, signed, weighted, longitudinal network
- Added
create_degree()
for creating networks of a given degree sequence, including k-regular graphs - Added
generate_citations()
for citation models - Added
generate_fire()
for forest-fire models - Added
generate_islands()
for island models create_explicit()
now has its own documentation
- Added
tie_is_triangular()
for identifying ties in triangles - Added
tie_is_cyclical()
for identifying ties in cycles - Added
tie_is_transitive()
for identifying ties involved in transitive closure - Added
tie_is_simmelian()
for identifying Simmelian ties
generate_permutation()
renamed toto_permuted()
- Updated how
graphr()
plots edges in directed networks - Removed automatic legends for signed networks
- Fixed other legends issues
table_data()
can now report on data from multiple packages{manynet}
and{migraph}
are included by default, and if any are not installed they are just ignored
table_data()
can now filter by any reported formats, such as 'directed' or 'twomode'
- Added more structure to Modifying section
- Added more structure to Mapping section
as_matrix.igraph()
now only draws from the "weight" attribute and not, e.g. "type"- Fixed bug in
to_blocks()
related to categorical membership variables
- Tie marks now infer networks when used within e.g.
mutate_ties()
node_names()
now returns names of the form "N01" etc for unlabelled networks- Fixed how
plot.matrix()
works for unlabelled networks - Added more on density in community tutorial
- British spelling arguments now appear further back in e.g.
graphr()
- Fixed how
graphs()
recognises ego networks so it is compatible with other splits
- Fixed #73 "node_color" mapping issue with
graphr()
- Fixed issues with variable name warnings in
graphr()
- Fixed #76 numeric "node_size" issues with
graphr()
function - Closed #66 so
graphs()
automatically uses "star" layout to plot ego networks - Fixed #41 so arguments for
graphr()
,graphs()
, andgrapht()
also accept British spellings
- Fixed bugs in hierarchical community detection algorithms for unconnected networks
- Added alttext to images in the README, tutorials, and website
- Added CRAN link to homepage
- Updated favicons
- Added more structure to the function overview
- Updated intro tutorial with images, exercises, questions, and more explanation and structure
- Updated data tutorial with images, new function names, questions, and more explanation and structure
- Updated data tutorial with more details on adding and deleting nodes, ties, and attributes
- Updated topology tutorial with new function names and more structure
- Updated viz tutorial with examples of
graphs()
andgrapht()
- Updated viz tutorial with more details and examples on colors and theming
- Updated viz tutorial with overview, examples, and details on layouts, including force-directed, layered, circular, spectral, and grid layouts
- Updated centrality tutorial with images, new function names, and more structure
- Updated centrality tutorial with more interpretation of centrality measures
- Updated position tutorial with new function names and more structure
- Updated community tutorial with new function names and more structure
- Test of
to_subgraphs()
no longer sampled
- Updated
{manynet}
logo with stocnet GitHub address and color blind safe colorway - Fixed bug in diffusion tutorial because of undeclared
{minMse}
dependency - Renamed all functions starting with the
network_*
prefix tonet_*
for conciseness - Migrated network measures, membership, motifs, and models' functions from
{migraph}
- Migrated community, position, topology, and diffusion tutorials from
{migraph}
- Added descriptions to tutorials
- Fixed bug in
create_core()
where the membership inferred when passing an existing network was incorrect - Added
generate_configuration()
for generating configuration models (including for two-mode networks) play_diffusion()
now includes an explicit contact argument to control the basis of exposure
node_is_*()
functions now infer network data context- Added
node_is_independent()
for identifying nodes among largest independent sets is_multiplex()
now excludes reserved tie attribute names other than type, such as "weight", "sign", or "wave"- Added
is_attributed()
to check for non-name nodal attributes - Fixed issues with ordering in
node_is_latent()
,node_is_recovered()
, andnode_is_infected()
(closes #71) - Added list methods for
is_twomode()
,is_labelled()
, andis_complex()
- Renamed functions to graph networks
graphr()
,graphs()
, andgrapht()
(autographr()
,autographs()
, andautographd()
are now deprecated) - node_size now an aesthetic, allowing
scale_size(range = c(...,...))
to be used - Reexported
scale_size()
from{ggplot2}
graphr()
now rescales node size depending on network size (closes #51)- Fixed issues with "hierarchy" layout for two mode network (closes #61)
- Updated "concentric" layout to accept unlabeled nodes (closes #68)
to_named()
now randomly generates and adds an alphabetic sequence of names, where previously this was just a random sample, which may assist pedagogical use- baby_names (internal) now includes a few extra "Q" and "U" names
- Added
to_correlation()
that implements pairwise correlation on network - Added
arrange_ties()
for{dplyr}
-like reordering of ties based on some attribute - Added
to_correlation()
for calculating the Pearson correlation- This takes a method argument for "all", "diag", "recip", or "complex"
- These are similar to functions implemented by Ron Breiger and shared by him in correspondence
- Fixed bug in
as_diff_model()
where events were out of order and named
is_multiplex()
now recognises "date", "begin", and "end" as reserved
- Migrated measures from
{migraph}
- Centrality measures
- Degree-related centrality measures include
node_degree()
,node_deg()
,node_indegree()
,node_outdegree()
,node_multidegree()
,node_posneg()
,tie_degree()
,net_degree()
,net_indegree()
, andnet_outdegree()
- Betweenness-related centrality measures include
node_betweenness()
,node_induced()
,node_flow()
,tie_betweenness()
, andnet_betweenness()
- Closeness-related centrality measures include
node_closeness()
,node_reach()
,node_harmonic()
,node_information()
,tie_closeness()
,net_closeness()
,net_reach()
, andnet_harmonic()
- Eigenvector-related centrality measures include
node_eigenvector()
,node_power()
,node_alpha()
,node_pagerank()
,tie_eigenvector()
, andnet_eigenvector()
- Degree-related centrality measures include
- Closure measures include
net_reciprocity()
,node_reciprocity()
,net_transitivity()
,node_transitivity()
,net_equivalency()
, andnet_congruency()
- Cohesion measures include
net_density()
,net_components()
,net_cohesion()
,
net_adhesion()
,net_diameter()
,net_length()
, andnet_independence()
- Diffusion measures include
net_transmissibility()
,net_recovery()
,net_reproduction()
,net_immunity()
,net_hazard()
,net_infection_complete()
,net_infection_total()
,net_infection_peak()
,node_adoption_time()
,node_thresholds()
,node_recovery()
, andnode_exposure()
- Heterogeneity measures include
net_richness()
,node_richness()
,net_diversity()
,node_diversity()
,net_heterophily()
,node_heterophily()
,net_assortativity()
, andnet_spatial()
- Hierarchy measures include
net_reciprocity()
,net_connectedness()
,net_efficiency()
, andnet_upperbound()
- Holes' measures include
node_bridges()
,node_redundancy()
,node_effsize()
,
node_efficiency()
,node_constraint()
,node_hierarchy()
,node_eccentricity()
,node_neighbours_degree()
, andtie_cohesion()
- Features' measures include
net_core()
,net_richclub()
,net_factions()
,node_partition()
,net_modularity()
,net_smallworld()
,net_scalefree()
,net_balance()
,net_change()
, andnet_stability()
- Centrality measures
- Updated properties from mapping to measuring
- Updated attributes from mapping to measuring
- Renamed
node_mode()
(deprecated) tonode_is_mode()
since it returns a logical vector - Updated
node_attribute()
andtie_attribute()
to return measures when the output is numeric
- Renamed
- Updated
node_exposure()
to work with two-mode and signed networks - Fixed
node_constraint()
to work with weighted two-mode networks, thanks to Toshitaka Izumi for spotting this - All measure functions can now be used in e.g.
mutate()
without specifying.data
- Added
net_independence()
for calculating the number of nodes in the largest independent set node_coreness()
now returns 'node_measure' outputnode_exposure()
now sums tie weights where passed a weighted network
- Migrated members from
{migraph}
- Cliques memberships
node_in_roulette()
(previouslynode_roulette()
) - Community and hierarchical memberships includes
node_in_optimal()
,node_in_partition()
(previouslynode_kernaghinlin()
),node_in_infomap()
,node_in_spinglass()
,node_in_fluid()
,node_in_louvain()
,node_in_leiden()
,node_in_betweenness()
,node_in_greedy()
,node_in_eigen()
, andnode_in_walktrap()
- Components' memberships include
node_in_component()
,node_in_weak()
, andnode_in_strong()
(NB:node_in_component()
is no longer phrased in the plural) - Core-periphery memberships include
node_is_core()
andnode_coreness()
- Diffusion memberships include
node_in_adopter()
- Equivalence memberships include
node_in_equivalence()
,node_in_structural()
,node_in_regular()
, andnode_in_automorphic()
- Note that these functions were previously named
node_*()
, but including the preposition_in_
is more consistent.
- Cliques memberships
node_member
class is now categoricalmake_node_member()
now converts numeric results to LETTER character resultsprint.node_member()
now works with categorical membership vectorsprint.node_member()
now declares how many groups before reporting the vectors
- All membership functions can now be used in e.g.
mutate()
without specifying.data
- Hierarchical clustering algorithms now return dendrograms
- Migrated motifs to take census of network, node positions, and brokerage from
{migraph}
, these includenode_by_tie()
,node_by_triad()
,node_by_quad()
,node_by_path()
,net_by_dyad()
,net_by_triad()
,net_by_mixed()
,node_by_brokerage()
,net_by_brokerage()
- Note that these functions were previously named
*_*_census()
, but the preposition_by_
is more consistent.
- Note that these functions were previously named
node_tie_census()
now works on longitudinal network data- Fixed bug where
print.node_motif()
wasn't printing the requested number of lines
- Migrated methods from
{migraph}
- Methods for equivalence clustering include
cluster_hierarchical()
andcluster_concor()
- Methods for selecting clusters include
k_strict()
,k_elbow()
, andk_silhouette()
- Methods for equivalence clustering include
- Several improvements to
cluster_concor()
cluster_concor()
now usesto_correlation()
for initial correlation- It still uses
stats::cor()
for subsequent iterations - Fixed how
cluster_concor()
handles unlabelled networks - Fixed how
cluster_concor()
handles two-mode networks - Fixed bug where
cluster_concor()
cutoff resulted in unsplit groups
cluster_hierarchical()
now also usesto_correlation()
- Added
ison_greys
dataset, including some corrections to that published in{networkdata}
- Updated
ison_friends
dataset to be explicitly longitudinal - Updated
ison_usstates
dataset with population data (Alaska and Hawaii missing) - Updated
ison_southern_women
dataset with surnames, titles, event dates, and corrected ties - Updated data documentation with revised multiplex definition
2024-03-15
- Fixed documentation issue with
to_scope()
for CRAN resubmission
2024-03-13
- Fixed issues with
autographr()
examples that were taking too long to run - Separated documentation for
autographr()
,autographs()
, andautographd()
functions - Closed #64 by adding aliases for
autographr()
,autographs()
, andautographd()
functions - Closed #65 by fixing bugs with how
node_is_infected()
,node_is_recovery()
,node_is_latent()
work for network lists
2024-03-12
- Closed #57 by updating
play_diffusions()
to revert future plan on exit - Fixed bug with how
generate_random()
works for two-mode networks with specified number of ties
- Closed #6 by updating how "lineage" layout works and places nodes on Y axis
- Closed #39 by making
autographr()
more flexible and efficient in setting variables to aesthetics - Updated themes to be compatible with newer and older versions of
{ggplot2}
- Added "configuration" layout for small triad/quad networks
- Updated
to_reciprocated.matrix()
to consistently work with matrices
2023-12-24
- Fixed minor documentation bug in
run_tute()
- pkgdown urls now point to "stocnet/manynet"
- Closes #34 by pushing changes to CRAN
2023-12-24
- Major overhaul of documentation
- Moved function description up so that it appears in tooltips
- Split documentation of many functions to provide more space for explanation
- Moved some functions around for more thematic documentation
- Added
pkg_data()
to report an overview of data contained within the package(s) - Updated README and DESCRIPTION with new organisational affiliation: stocnet/manynet
- Updated tests to be consistent with future
{ggplot2}
release
- Migrated
play_diffusion()
andplay_diffusions()
from{migraph}
- Including class creation, and
print()
,summary()
, andplot()
methods
- Including class creation, and
- Migrated
play_learning()
andplay_segregation()
from{migraph}
- Including class creation, and
print()
,summary()
, andplot()
methods
- Including class creation, and
- Fixed bug in
create_tree()
where it was not returning a two-mode network correctly
- Added
as_diffusion()
to coerce a table of diffusion events into diff_model classas_*()
functions are now considered modifications
- Completed a full range of tidy verbs for nodes
- Added
mutate_nodes()
- Added
filter_nodes()
- Added
rename_nodes()
- Added
- Completed a full range of tidy and igraph verbs for ties
- Added
bind_ties()
- Added
delete_ties()
- Added
- Added
to_tree()
to find one or more spanning trees amongst a network's ties - Added
from_ties()
to collect multiple networks into a multiplex network
- Renamed
is.igraph()
tois_igraph()
for igraph v2.0.0 - Added
is_list()
for identifying a list of networks - Migrated
node_is_core()
,node_is_cutpoint()
,node_is_fold()
,node_is_isolate()
,node_is_mentor()
from{migraph}
- Migrated
node_is_exposed()
,node_is_infected()
,node_is_latent()
,node_is_recovered()
from{migraph}
- Migrated
node_is_max()
,node_is_min()
,node_is_random()
from{migraph}
- Migrated
tie_is_bridge()
,tie_is_loop()
,tie_is_multiple()
,tie_is_reciprocated()
from{migraph}
- Added
tie_is_feedback()
- Migrated
tie_is_max()
,tie_is_min()
from{migraph}
- Added
tie_is_random()
- Added
scale_edge_color_centres()
,scale_edge_color_ethz()
,scale_edge_color_iheid()
,scale_edge_color_rug()
,scale_edge_color_sdgs()
- Fixed bug that meant edge scales were unavailable (closes #43)
autographr()
now provides legends by default where multiple colours are used (closes #52)autographs()
now labels legends correctly for binary variables (closes #38)autographs()
now graphs just the first and last networks in a list (closes #45)autographs()
now includes an option whether the layout should be based on the first, last, or both of two networks (closes #48)
- Renamed
ison_konigsberg
toison_koenigsberg
and named the bridges ison_algebra
now in long multiplex formatison_karateka
now weighted, anonymous members are named by number, and "obc" variable renamed "allegiance"ison_lawfirm
enlarged from 36 to 71 nodes and now consists of three multiplex, directed networksison_southern_women
names are now title case- Added
ison_hightech
, a multiplex, directed network from Krackhardt 1987 - Added four
ison_monastery
datasets, three of which are signed and weighted, and the other is longitudinal, from Sampson 1969 (closes #49) - Added six
ison_potter
datasets in a list of networks, from Bossaert and Meidert 2013 (closes #47) - Added
ison_usstates
data on the contiguity of US states, from Meghanathan 2017
2023-12-17
as_tidygraph.diff_model()
no longer creates names for unlabelled networks
to_waves.diff_model()
now adds three logical vectors as variables, "Infected", "Exposed", and "Recovered"- Relies on parallels to migraph's
node_is_latent()
,node_is_infected()
, andnode_is_recovered()
- Fixed bug in wave naming
- Relies on parallels to migraph's
autographr()
now shapes seed, adopter, and non-adopter nodes using a parallel to migraph'snode_adoption_time()
for- Improved guide/legend labelling and positioning
autographs()
now colors susceptible, exposed, infected, and recovered nodes correctlyautographd()
now colors susceptible, exposed, infected, and recovered nodes correctly
2023-12-15
- Overhaul of the README to summarise many of the unique aspects of the package (closed #36)
- Added
as_tidygraph()
method for diff_model objects - Added
as_siena()
method for tidygraph objects
- Manipulating functions now called Modifying
to_waves()
now works on diff_model objects, add attributes and namesis_multiplex()
now recognises a tie/edge 'type' attribute as evidence of multiplexity- Deleted unnecessary reexports from other packages
igraph::is_bipartite()
is superseded byis_twomode()
tidygraph::activate()
is superseded bymutate_ties()
and similar functions
- Fixed bug by replacing older
igraph::as_incidence_matrix()
andigraph::graph_from_incidence_matrix()
withigraph::as_biadjacency_matrix()
andigraph::graph_from_biadjacency_matrix()
autographr()
now plots diff_model objects, showing the diffusion as a heatmap on the verticesautographs()
andautographd()
now utilise network information in diff_model objects to provide better layouts (closed #17)- Fixed bug with specifying
node_size
inautographd()
many_palettes
replacesiheid_palette
- Added new palettes, themes and scales for graphs (closed #9)
theme_ethz()
,scale_color_ethz()
/scale_colour_ethz()
, andscale_fill_ethz()
for ETH Zürichtheme_uzh()
,scale_color_uzh()
/scale_colour_uzh()
, andscale_fill_uzh()
for Uni Zürichtheme_rug()
,scale_color_rug()
/scale_colour_rug()
, andscale_fill_rug()
for Uni Gröningen
- Added
ison_physicians
data that includes four, multiplex networks with adoption data
2023-12-06
- Fixed documentation issues with
run_tute()
- Added
read_graphml()
andwrite_graphml()
for importing and exporting graphml objects, mostly wrappers for igraph functions.
autographd()
andautographs()
can now be used for plotting diffusion models.- Updates to
to_waves()
andautographd()
to account for 'exposed' nodes in diffusion models.
- Updates to
- Updates to layouts
- Updates to
hierarchical
layout so that node name can be specified for centering the layout - Updated
theme_heid()
layout
- Updates to
- Added faction attribute to
ison_starwars
data, thanks to coding by Yichen Shen and Tiphaine Aeby
2023-11-15
- Updated
run_tute()
function to "fuzzy" match tutorial names
- Added
+.ggplot()
method for visualising multiple plots in the same pane - Added custom theme
theme_iheid
for plots - Added custom
scale_
family of functions for changing colour scales in plots - Updated
autographr()
:- Added "center" option for hierarchy layout that places events or actors in the middle alike "bip" and "bip3" layouts
- Added "lineage" layout that fixes node positions according to values in y axis
- Fixed bugs with
autographd()
function
2023-11-02
- Fixed tutorials documentation issue for CRAN
2023-11-01
- Updated treatment of adjacency matrices in
as_igraph()
in accordance with upcoming updates to{igraph}
package (closing #27)
- Added
to_mentoring
function
- Fixed bugs in
autographr()
related toedge_size
andedge_color
- Fixed bugs and updated label placements for "circular" and "concentric" layouts for
autographr()
- Fixed issues with self-ties in
autographr()
- Updated tests for
autographr()
- Added
ison_friends
, a one-mode network on character connections of a popular TV series
2023-10-25
- Added documentation for tutorial helper functions
generate
examples leverageautographr()
again
- Fixed bug in
to_redirected.tbl_graph()
print.tbl_graph()
no longer mentions the object class
layout_tbl_graph_concentric()
now works with two-mode networks, multiple levels for one-mode networks, and accepts new vectors- Added
layout_tbl_graph_multilevel()
for laying out multilevel networks - Added
layout_tbl_graph_triad()
andlayout_tbl_graph_quad()
configurational layouts
- Added
ison_starwars
, a collection of seven weighted interaction networks on a popular film franchise ison_networkers
names are now in title case, not all caps
2023-10-19
- Added 'tutorial0' for those less comfortable with R
- Added
run_tute()
helper for quicker access to{manynet}
and{migraph}
tutorials - Added
extract_tute()
for extracting the main code examples from{manynet}
and{migraph}
tutorials - Added
purl = FALSE
to tutorial chunks that are not needed for extraction (thanks @JaelTan) - Updated website with new functions
run_tute()
andextract_tute()
- Fixed remaining issues with
node_group
and updated documentation
2023-10-11
- README now includes Macports installation instructions
- Added
{graphlayouts}
,{ggforce}
, and{multiplex}
to Suggested
- Added
to_galois()
for transforming networks into partially ordered Galois lattices
- Fixed bug in node_shape argument in
autographr()
- Fixed bug in node_group argument in
autographr()
, closes #11 - Fixed bug in inconsistent default colour scheme for node_color and node_group in
autographr()
autographr()
now automatically bends arcs for reciprocated ties when directed network is not too large/denseautographr()
now accepts unquoted variables as argumentsautographr()
now usesgraphlayouts::layout_igraph_multilevel
where appropriate- Default node labelling now larger and further from nodes in circular layout
ison_algebra
now an anonymised network (again)
2023-09-17
- Fixed URL in read_
2023-09-17
- README now points to
{migraph}
earlier
- Fixed various bugs in first (data) tutorial
- Fixed explicit node_shape bug
- Added
ison_lawfirm
data from Lazega, see documentation for more details - Upgraded ison_marvel data to latest igraph specification
2023-08-11
- Fixed documentation issues with map_palettes
2023-08-11
- Closed #4 by adding
thisRequiresBio()
helper function to download Bioconductor packages - Upgraded ison data to latest igraph specification
- Added
ison_konigsberg
for illustrating Seven Bridges of Konigsberg - Removed
ison_brandes2
and added potential modal type as extra variable toison_brandes
- Consolidated
ison_bb
,ison_bm
,ison_mb
, andison_mm
into a list of networks calledison_laterals
- Added
- Added
create_explicit()
for creating networks based on explicit nodes and ties
- Added
delete_nodes()
for deleting specific nodes - Added
to_eulerian()
function that returns a Eulerian path network, if available, from a given network
- Moved additional
is_
functions from{migraph}
- Added
is_connected()
to test if network is strongly connected - Added
is_perfect_matching()
to test if there is a matching for every node in the network - Added
is_eulerian()
to test whether there is a Eulerian path for a network - Added
is_acyclic
to test whether network is a directed acyclic graph - Added
is_aperiodic
to test whether network is aperiodic
- Added
- Added partition layouts
- Added
layout_tbl_graph_alluvial()
that places successive layers horizontally - Added
layout_tbl_graph_concentric()
that places a "hierarchy" layout around a circle - Added
layout_tbl_graph_hierarchy()
that layers the nodes along the top and bottom sequenced to minimise overlap - Added
layout_tbl_graph_ladder()
that aligns nodes across successive layers horizontally - Added
layout_tbl_graph_railway
that aligns nodes across successive layers vertically
- Added
- Added
theme_iheid()
function that themes graphs with colors based on the Geneva Graduate Institute
2023-06-20
- Added tutorials for package
- Moved and updated "data" tutorial from
{migraph}
- Moved and updated "visualisations" tutorial from
{migraph}
- Moved and updated "data" tutorial from
2023-06-09
- Removed commented out examples
- Added more detail on what various functions return
- Added
na_to_mean.data.frame()
- Added
network_dims.network()
2023-06-07
- Split up the
{migraph}
package, adding the Make, Manipulate, and Map functions to this package - Added package documentation
- Added .github files
- Added README structured around the problems the package solves
- Improved consistency and readability
- Functions that take data as their first argument has that first argument named
.data
- Added new
print.tbl_graph
method that offers easy to interpret information - Note that this method is exported but not currently documented
- Functions that take data as their first argument has that first argument named
- Reduced package dependencies considerably
- Many are now weak dependencies; a dialog is invoked when the calling function is used for the first time and the user is prompted to install the missing package
- Added extensive testing
- Added new 'manynet' logo
- Added
read_*()
functions, e.g.read_edgelist()
- Added
write_*()
functions, e.g.write_edgelist()
- Added
write_matrix()
for exporting to matrices
- Added
- Added
create_*()
functions, e.g.create_lattice()
- All
create_*()
functions returntbl_graph
class objects
- All
- Added
generate_*()
functions, e.g.generate_smallworld()
- Added
ison_*
network data, e.g.ison_southern_women
- Added
as_*()
functions, e.g.as_igraph()
- Fixed
as_edgelist.network()
- Fixed
as_network.data.frame()
- Fixed
as_network.tbl_graph()
- Fixed
- Added
join_*()
functions, e.g.join_ties()
- Added
add_*()
functions, e.g.add_node_attribute()
- All
create_*()
functions returntbl_graph
class objects
- All
- Added
mutate_*()
functions, e.g.mutate_ties()
- With
mutate_ties()
, it is no longer necessary toactivate(edges)
- With
- Added
rename_*()
functions, e.g.rename_ties()
- Added
is_*()
functions, e.g.is_dynamic()
- Fixed
is_labelled()
to work correctly with multiple network formats
- Fixed
- Added
to_*()
functions, e.g.to_mode1()
- This includes functions for reformatting, transforming, and splitting
- This also includes functions for returning networks with missing data replaced by some imputed values
- Fixed
to_giant.network()
to_directed()
now a methodto_subgraphs()
now returns a list oftbl_graph
sto_reciprocated()
now works on edgelists, matrices, tbl_graphs, and networksto_acylic()
now works on matrices, tbl_graphs, and networks
- Added
from_*()
functions, e.g.from_egos()
- Fixed
from_subgraphs()
- Fixed
- Added "grab" functions, e.g.
network_nodes()
network_dims()
is now a method
- Added
autographr()
,autographs()
, andautographd()
- Added layout functions
- Fixed
layout_tbl_graph_concentric()
- Fixed