Class

  • Fixed stocnet validation test issue

Describing

  • Fixed mode_names.stocnet() and layer_names.stocnet() to look up correct info names

Manipulating

  • Improved add_info()
    • add_info(.data) (so no further arguments) now checks to see whether metadata may be added and prompts the user to add it if so
    • add_info(.data, optional = TRUE) extends this to further, optional metadata
    • This includes prompting the user by layer for multiplex networks

Package

  • Updated title/description text
  • Updated README
    • Updated TOC to include new wrangling section
    • Added package migration note to README
  • Updated startup messages with migration notesand links to autograph, netrics, and migraph
  • Removed a set of defunct wrappers for moved/retired functions

Making

  • Fixed reference formatting of DOI and citation text

Coercion

  • Improved expect_nodes()/expect_ties() and introduces internal active-context helpers
  • Fixed as_diffusion.igraph() to derive diffusion events from changelists

Manipulating

  • Added filter_ties.igraph() and filter_ties.stocnet()
  • Improved active context inference across mutate_nodes.stocnet(), mutate_ties.stocnet(), filter_nodes.stocnet(), and filter_ties.stocnet()
  • Added bind_changes.igraph() and delegated ‘tbl_graph’ method to it

Modifying

  • Added to_correlation.matrix() S3 method

Package

  • Updated README for CRAN submission

Package

  • Updated exported registrations and reference documentation for expanded method coverage

Coercion

  • Added as_globallist() for extracting global variables from ‘igraph’ and ‘stocnet’ objects
  • Added as_stocnet.data.frame() for coercing edgelists to stocnet objects (closes #138)
  • Improved make_stocnet() construction, indexing, and validation of nodes, ties, changes, info, and globals
  • Improved as_stocnet() coercion for data.frame and tbl_graph inputs
  • Fixed #137 by extending time variable class validation to include integer and POSIXlt (thanks @auzaheta)
  • Fixed #140 and #141 by making sure make_stocnet() aborts early and informatively when node labels do not match (thanks @auzaheta)

Manipulating

  • Added add_tie_attribute()
  • Added bind_nodes() for adding nodes and ties from another network
  • Added arrange_changes() and arrange_nodes() as generics for reordering nodes and ties in a network
  • Added gather_changes() as a generic for gathering changes up to a time point
  • Added rename_changes() for renaming change variables and rename_globals() for renaming global variables
    • Improved ‘data.frame’ and by extenion ‘stocnet’ rename_*() methods to rename variables when no arguments given
  • Added select_ties(), select_changes(), and select_globals() for selecting variables
    • Improved ‘data.frame’ and by extenion ‘stocnet’ select_*() methods to reorder variables when no arguments given
  • Added filter_nodes(), filter_ties(), and filter_changes() as generics for filtering nodes, ties, and changes in a network
  • Added summarise_ties() for summarising tie variables
  • Added join_nodes.stocnet() for joining a nodelist to a stocnet object
  • Added ‘stocnet’ methods for arrange_ties(), bind_ties(), mutate_nodes(), mutate_ties(), and rename_nodes()
  • Renamed add_changes() to bind_changes.tbl_graph()
    • Added bind_changes.stocnet() for binding on groups of changes to a stocnet object
  • Improved from_ties() to accept named arguments instead of a named list, improving consistency with other modifying functions
    • Added from_ties.stocnet() for creating a multiplex stocnet object from more than one network, including handling of tie types as layers and carrying forward nodal attributes
  • Improved node filtering and reindexing behaviour in stocnet objects so ties and changes remain aligned
  • Improved all manipulating generics by adding .default methods that coerce to supported graph classes and then restore original classes, improving consistency across classes and reducing the need for users to coerce before manipulating

Modifying

  • Added join_nodes() for joining two nodelists
  • Added new ‘stocnet’ methods for common modifications
  • Added mutate_globals() for mutating global variables in a network
  • Improved many to_*() default methods to coerce through supported graph classes and then restore original classes
  • Improved conversion consistency across direction, projection, paths, plexity, correlation, and weight transformations
  • Fixed default dispatch in scope and transformation helpers, including to_subgraph()

Marking

  • Added is_cognitive() for identifying cognitive social structure networks
  • Added is_egonet() for identifying egocentric networks
  • Improved is_*() handling across stocnet, igraph, and tbl_graph inputs
  • Fixed several default is_*() methods to return logical values reliably after coercion
  • Fixed is_dynamic.stocnet() to look for more time-type variables
  • Fixed #135, which was due to faulty two-mode test (thanks @schochastics)

Describing

  • Added printing of the globals list for stocnet objects (closed #139)
  • Improved net_nodes(), net_node_attributes(), and net_tie_attributes() coverage for table and network-like inputs
  • Improved network metadata extraction defaults and naming behaviour across classes
  • Fixed net_nodes.stocnet() and net_dims.stocnet() to work with unlabelled networks

Package

  • Fixed checkmark printing issue

Package

  • Changed to R 4.1 syntax including the native pipe (|>), the dplyr R dependence anyway
  • Moved measuring, marking functions (node marks, tie marks, node selection, nodal diff marks), membership, and motif functions to netrics
  • Moved run_tute(), extract_tute(), and tutorial 0 to migraph
  • Moved tutorials 3–6 to netrics
  • Removed autograph, learnr, and netdiffuseR from suggested dependencies
  • Began using functional testing

Making

Coercion

  • Added new stocnet class for representing multilevel, multiplex, multimodal, signed, dynamic, or longitudinal networks as a structured list of tibbles and metadata
    • Added make_stocnet() for straightforward construction of stocnet objects
    • Added validate_stocnet() for checking and suggesting improvements to stocnet structure
    • Added as_stocnet.igraph() for converting igraph objects to stocnet, including converting tie types to layers
    • Added value class to hold and print values of different classes held in a list vector
  • Fixed as_matrix.igraph() for multiplex networks
  • Fixed as_matrix.network() and as_igraph.network() bugs related to inheriting integer names
  • Internalized diffnet coercion so that netdiffuseR is no longer required

Manipulating

Modifying

Describing

Marking

Making

Modifying

  • Added net_attributes() for returning the names of graph attributes
  • Added net_info() for returning the list of graph attributes
  • Improved net_waves() to now return waves = 1 for cross-sectional networks

Marking

  • Fixed node_is_isolate() to work with signed networks
  • Fixed node_is_pendant() to work with signed networks

Tutorials

  • Fixed bug in “tutorial1” where renv was misinterpreting a hint as a package dependency

Package

Making

Modifying

  • Improved to_mode1() and to_mode2() to carry forward nodal and tie attributes during projection
  • Improved to_mode1() and to_mode2() to drop unnecessary nodal information
  • Improved to_uniplex() to handle multimodal multiplex filtering correctly and retain tie type information
  • Fixed #123 by inserting NAs before converting networkDynamic to igraph
  • Fixed add_changes() to work with tbl_graph
  • Fixed filter_nodes() to use dplyr::all_of()
  • Added interpolate() helper for injecting missing data
  • Restructured modifying function documentation around transformations (e.g. direction)

Measuring

  • Split measure_attributes documentation into separate nodes and ties pages

Motifs

Data

  • Compiled ison_marvel_relationships and ison_marvel_teams into single multiplex fict_marvel dataset

Making

  • Improved vector printing to be more succinct and suggest print_all()
  • Improved printing methods for changing mnet objects

Modifying

  • Added delete_changes() for deleting all changes from a changing network
  • Improved to_waves() to work with networks that are changing, longitudinal, or both
  • Fixed as_diffusion() to not trim off final wave in the report
  • Fixed as_diffusion() to return correct E and R compartments for waning diffusion models

Marking

Measuring

  • Improved net_diversity() and node_diversity()
    • No longer offers a cluster option, which can be obtained using over_membership()
    • Added more methods for calculating diversity, including Teachman’s, coefficient of variation, and the Gini coefficient
    • Improved net_diversity() and node_diversity() to use and declare methods appropriate for the vector of attributes
  • Added net_homophily() and node_homophily() for measuring homophily according to different methods including
    • Krackhardt’s EI index of heterophily as well as its inverse as a measure of homophily
    • Yule’s Q as a further measure of homophily
    • Geary’s C as a measure of homophily for numeric attributes
  • Updated documentation for richness, diversity, and homophily measures
  • Fixed node_is_latent(), node_is_infected(), node_is_recoverd() to work with changing networks
  • Improved node_is_exposed() to work with changing networks and now accepts a time argument

Tutorials

Making

Tutorials

  • Added more glossary items for diversity tutorial

Modifying

Tutorials

  • Fixed duplicate chunk label in data tutorial

Package

  • Removed extracted tute scripts from root folder
  • Added extensive testing for core and older functions

Making

  • Exported describe_*() functions for describing networks, nodes, ties, and changes

Making

  • Added read_gdf() for importing GDF files
  • Improved mnet object printing to publish the number of each type of tie in multiplex networks

Modifying

Measuring

Tutorials

  • Fixed bug where tutorials were not autoloading necessary packages
  • Moved glossary to own script and added more tutorial 5-relevant entries
  • Added more glossary keys to tutorial 5

Data

  • Improved fict_actually to be a multiplex network (thanks @korakotbua)

Tutorials

  • Added more glossary items on centrality, modularity
  • Excluded setup details when extracting a tutorial script
  • Added French phrases to tutorials 3-6

Making

  • Fixed #113 relating to igraph v2.2.0+ and explicit sample_bipartite functions
  • Added read_pkg() for creating a network of the function interdependencies within a package

Modifying

  • Added familiar $ operations for mnet objects
    • There is now dollar lookup functionality

Measures

Memberships

  • Added node_in_core() for categorising nodes into 2+ core/periphery groups

Motifs

  • Added net_by_hierarchy() for characterising networks by their graph theoretic dimensions of hierarchy

Data

  • Added ison_emotions
  • Renamed irps_nuclear
  • Separated out data scripts into their different categories

Tutorials

  • Added autograph to setups for all manynet tutorials
  • Improved data tutorial
    • Removed manynet two-mode question from data tutorial
    • Added more detail on examining data to data tutorial
  • Improved topology tutorial
    • Using k-coreness in section on core-periphery
    • Added hierarchy multichoice
    • Demonstrated how to interpret hierarchy measure
    • Added more challenging comparison of hierarchy in two networks
    • Updated several glossary terms

Package

  • Dropped mapping from function overview on website
  • Dropped viz tutorial, moved to autograph
  • Added CITATION
  • Improved run_tute() and extract_tute() to search for autograph

Printing

Modifying

  • Fixed to_uniplex() test so that it doesn’t rely on random sampling

Marking

Data

  • Added irps_nuclear_discourse for goldfish and various testing of dynamic networks
  • Added ison_judo_moves for judo move sequences

Package

Classes

  • Added mdate pillar shaft for pretty printing of NAs in messydate variables

Modifying

Measuring

  • Improved net_core() with method options for calculating correlation, distance, ndiff, and diff

Membership

Mapping

  • Moved graphr(), graphs(), and grapht() to autograph
  • Moved palette functionality to autograph
  • Moved remaining layouts to autograph
  • Moved theme functionality to autograph
  • Dropped remaining plot functions
  • Dropped or avoided using autograph-related functions in examples to make package lighter
  • Please see autograph for continued development of these features

Package

  • Removed failing URLs

Modifying

Package

  • Updated pandoc setup in pushrelease workflow

Making

  • Dropped print and summary methods for diffs_model (moved to migraph)

Modifying

  • Added to_no_missing() for removing nodes with missing data
  • Fixed as_diffusion.mnet() so that it includes “diff_model” class

Measuring

Memberships

  • Fixed node_in_leiden() to use resolution parameter in call to igraph

Data

  • Improved table_data() so that it lists components, longitudinal, dynamic, and changing data
  • Added more description for fict_lotr
  • Added irps_revere data

Making

  • Added Deffuant model to play_learning()
  • Added fatality parameter to play_diffusion() for e.g. SID models
  • Improvements to create_ego()
    • Now accepts an explicit ego in the call, e.g. create_ego(“Andy”)
    • Now uses pluralization to prompt alter?s
    • Can now create two-mode ego networks
    • Uses new snet_prompt() for easier to read consoles
    • Uses new snet_minor_info() for reminding users to assign the function
    • Now names ego in the title of the resulting object
    • Fixed bug where ego duplicated if already in the roster

Modifying

  • Extended to_matching() to work on the more general class of stable matching problems, including where nodes have different capacities

Marking

  • Added node_is_universal()

Measuring

  • Improved node measure printing with a spark bar

Making

  • 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 not play_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
  • Improved write_*() functions by printing picked pathnames to the console

Modifying

  • Added as_changelist() for extracting changelists from ‘mnet’ objects
  • Added as_diffusion.mnet() for maintaining backward compatibility for diffusion measures
  • Added as_tidygraph.networkDynamic() and as_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 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

Marking

  • 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

Measuring

  • 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

Motifs

Data

  • Updated fict_potter with composition changes
  • Renamed ison_starwars to fict_starwars, updating it with composition changes and additional coding
  • Added irps_911 network data on 9/11 hijackers and associates

Learning

  • Updated ‘community’ tutorial with guidance on node_in_community()
  • Updated ‘position’ tutorial with guidance on tie_is_bridge() and node_bridges()
  • Moved ‘diffusion’ tutorial to migraph to help with dependencies

Modifying

  • Fixed bug in to_waves() where result was unordered

Mapping

  • graphr() now uses categorical palettes (effectively closing #60)

Measuring

  • Added net_correlation() for calculating the product-moment correlation between networks
  • Improved speed of make_network_measure by retrieving single call at parent level

Package

  • Fixed miscellaneous documentation issues, re roxygen
  • Separated out the data sections in pkgdown

Modifying

  • Added to_simplex.data.frame() and to_simplex.network()

Marking

  • Fixed bug in is_aperiodic() where it would not work in tutorial chunks

Measuring

  • Added over_membership() for obtaining summary statistics by a membership vector

Practicing

  • Fixed data pointers in several tutorials
  • Added glossary items to diffusion tutorial

Package

  • 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

Making

Modifying

  • 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

Mapping

  • 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 be snapped 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

Marking

  • 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

Measuring

  • 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()

Memberships

  • 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() to node_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

Modelling

  • Added cluster_cosine() for another equivalence option
  • Added internal documentation for depth_first_recursive_search

Practicing

  • Improved how run_tute() fuzzy matched so that insertions are not as costly
  • Improved tutorials with glossary architecture
  • 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

Data

  • Added irps_wwi, a dynamic, signed network
  • Renamed ison_blogs to irps_blogs, added info
  • Renamed ison_books to irps_books, added info
  • Renamed ison_usstates to irps_usgeo, added info
  • Renamed ison_friends to fict_friends, added info and fixed directed issue
  • Renamed ison_greys to fict_greys, added info
  • Renamed ison_lotr to fict_lotr, added info
  • Renamed ison_thrones to fict_thrones, added info and some additional nodal attributes
  • Renamed ison_potter to fict_potter, added info and combined waves into single object

Package

  • Fixed errors when testing without concaveman
  • Fixed errors when plotting some examples without ggdendro

Package

  • Fixed errors when testing on extended features and Suggested packages not available

Package

  • Fixed thisRequires() bug by testing for interactivity
  • Dropped brokerage census examples

Modifying

Mapping

  • Fixed bug in graphr() where user not informed about concaveman dependency
  • Fixed graphr() examples

Package

  • Updated all tutorials with different themes to make them more distinctive
  • Updated centrality tutorial with gifs
  • Updated visualisation tutorial with a few extras

Modifying

  • Added to_dominating() for extracting the dominating tree of a given network

Mapping

  • Reworked graphr() to make function more concise and consistent (thanks @henriquesposito)
    • This allows new functionality and improves debugging moving forward

Measuring

  • 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

Making

  • 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

Measures

  • 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()

Data

  • Added ison_dolphins
  • Added ison_books
  • Added ison_blogs

Package

  • 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
  • Added console theme to color the startup and various warning or info messages

Making

  • 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

Modifying

  • 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

Mapping

  • Added set_manynet_theme() to set theme (re #60), but not yet fully implemented

Marking

Measuring

Members

  • Fixed node_in_equivalence() to use census directly

Motifs

  • 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

Data

  • Updated ison_southern_women with grand info
  • Updated ison_laterals with reordered nodes

Package

  • Added beautiful message on startup
  • Improved error warnings, stop() replaced by cli::cli_abort()
  • Improved website structure
    • Structured make_, manip_, map_, mark_, measure_, and model_ documentation
    • Improved function overview layout for measures
  • Updated Github Actions scripts
  • 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() and extract_tute() to look for installed packages and report progress

Making

  • 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
  • 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

Manipulating

  • Improved as_tidygraph() to add an additional class ‘mnet’ that is used for prettier printing
  • 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() and delete_ties()
  • Added examples for add_ties() and delete_ties() in documentation
  • Fixed bug in to_unnamed.igraph() when used with already unlabelled networks

Marking

  • 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

Measuring

  • 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

Data

  • Updated all ison_ data with new as_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 into ison_monks, a single multiplex, signed, weighted, longitudinal network

Making

Marking

  • 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

Manipulating

Mapping

  • Updated how graphr() plots edges in directed networks
  • Removed automatic legends for signed networks
  • Fixed other legends issues

Data

  • 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’

Website

  • Added more structure to Modifying section
  • Added more structure to Mapping section

Modifying

  • 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

Marks

  • Tie marks now infer networks when used within e.g. mutate_ties()

Memberships

  • 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

Mapping

  • British spelling arguments now appear further back in e.g. graphr()
  • Fixed how graphs() recognises ego networks so it is compatible with other splits

Mapping

  • 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(), and grapht() also accept British spellings

Memberships

  • Fixed bugs in hierarchical community detection algorithms for unconnected networks

Package

  • Added alttext to images in the README, tutorials, and website
  • Added CRAN link to homepage
  • Updated favicons
  • Added more structure to the function overview

Making

  • 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

Mapping

  • Updated viz tutorial with examples of graphs() and grapht()
  • 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

Measures

  • 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

Memberships

  • Updated community tutorial with new function names and more structure

Package

Package

  • 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 to net_* 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

Making

  • 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

Marking

  • 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(), and node_is_infected() (closes #71)
  • Added list methods for is_twomode(), is_labelled(), and is_complex()

Mapping

  • Renamed functions to graph networks graphr(), graphs(), and grapht() (autographr(), autographs(), and autographd() 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)

Modifying

  • 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

Marking

  • is_multiplex() now recognises “date”, “begin”, and “end” as reserved

Measuring

Members

  • Migrated members from migraph
    • Cliques memberships node_in_roulette() (previously node_roulette())
    • Community and hierarchical memberships includes node_in_optimal(), node_in_partition() (previously node_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(), and node_in_walktrap()
    • Components’ memberships include node_in_component(), node_in_weak(), and node_in_strong() (NB: node_in_component() is no longer phrased in the plural)
    • Core-periphery memberships include node_is_core() and node_coreness()
    • Diffusion memberships include node_in_adopter()
    • Equivalence memberships include node_in_equivalence(), node_in_structural(), node_in_regular(), and node_in_automorphic()
    • Note that these functions were previously named node_*(), but including the preposition _in_ is more consistent.
  • node_member class is now categorical
    • make_node_member() now converts numeric results to LETTER character results
    • print.node_member() now works with categorical membership vectors
    • print.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

Motifs

Methods

  • Migrated methods from migraph
    • Methods for equivalence clustering include cluster_hierarchical() and cluster_concor()
    • Methods for selecting clusters include k_strict(), k_elbow(), and k_silhouette()
  • Several improvements to cluster_concor()
    • cluster_concor() now uses to_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 uses to_correlation()

Data

  • 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

Modifying

  • Fixed documentation issue with to_scope() for CRAN resubmission

2024-03-13

Mapping

  • Fixed issues with autographr() examples that were taking too long to run
  • Separated documentation for autographr(), autographs(), and autographd() functions
  • Closed #64 by adding aliases for autographr(), autographs(), and autographd() functions
  • Closed #65 by fixing bugs with how node_is_infected(), node_is_recovery(), node_is_latent() work for network lists

2024-03-12

Making

  • 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

Mapping

  • 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

Modifying

  • Updated to_reciprocated.matrix() to consistently work with matrices

2023-12-24

Package

  • Fixed minor documentation bug in run_tute()
  • pkgdown urls now point to “stocnet/manynet”
  • Closes #34 by pushing changes to CRAN

2023-12-24

Package

  • 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

Making

Modifying

Marking

  • Renamed is.igraph() to is_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()

Mapping

  • 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)

Data

  • Renamed ison_konigsberg to ison_koenigsberg and named the bridges
  • ison_algebra now in long multiplex format
  • ison_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 networks
  • ison_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

Making

  • as_tidygraph.diff_model() no longer creates names for unlabelled networks

Modifying

  • 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(), and node_is_recovered()
    • Fixed bug in wave naming

Mapping

  • autographr() now shapes seed, adopter, and non-adopter nodes using a parallel to migraph’s node_adoption_time() for
    • Improved guide/legend labelling and positioning
  • autographs() now colors susceptible, exposed, infected, and recovered nodes correctly
  • autographd() now colors susceptible, exposed, infected, and recovered nodes correctly

2023-12-15

Package

  • Overhaul of the README to summarise many of the unique aspects of the package (closed #36)

Making

Modifying

Mapping

  • autographr() now plots diff_model objects, showing the diffusion as a heatmap on the vertices
  • autographs() and autographd() now utilise network information in diff_model objects to provide better layouts (closed #17)
  • Fixed bug with specifying node_size in autographd()
  • many_palettes replaces iheid_palette
  • Added new palettes, themes and scales for graphs (closed #9)
    • theme_ethz(), scale_color_ethz()/scale_colour_ethz(), and scale_fill_ethz() for ETH Zürich
    • theme_uzh(), scale_color_uzh()/scale_colour_uzh(), and scale_fill_uzh() for Uni Zürich
    • theme_rug(), scale_color_rug()/scale_colour_rug(), and scale_fill_rug() for Uni Gröningen

Data

  • Added ison_physicians data that includes four, multiplex networks with adoption data

2023-12-06

Package

  • Fixed documentation issues with run_tute()

Making

Mapping

  • autographd() and autographs() can now be used for plotting diffusion models.
    • Updates to to_waves() and autographd() to account for ‘exposed’ nodes in diffusion models.
  • Updates to layouts
    • Updates to hierarchical layout so that node name can be specified for centering the layout
    • Updated theme_heid() layout

Data

  • Added faction attribute to ison_starwars data, thanks to coding by Yichen Shen and Tiphaine Aeby

2023-11-15

Package

  • Updated run_tute()function to “fuzzy” match tutorial names

Mapping

  • 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

Package

  • Fixed tutorials documentation issue for CRAN

2023-11-01

Making

  • Updated treatment of adjacency matrices in as_igraph() in accordance with upcoming updates to igraph package (closing #27)

Manipulating

  • Added to_mentoring function

Mapping

  • Fixed bugs in autographr() related to edge_size and edge_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()

Data

  • Added ison_friends, a one-mode network on character connections of a popular TV series

2023-10-25

Package

  • Added documentation for tutorial helper functions

Making

  • generate examples leverage autographr() again

Manipulating

  • Fixed bug in to_redirected.tbl_graph()
  • print.tbl_graph() no longer mentions the object class

Mapping

  • 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() and layout_tbl_graph_quad() configurational layouts

Data

  • 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

Package

  • 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() and extract_tute()

Mapping

  • Fixed remaining issues with node_group and updated documentation

2023-10-11

Package

Manipulating

  • Added to_galois() for transforming networks into partially ordered Galois lattices

Mapping

  • 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/dense
  • autographr() now accepts unquoted variables as arguments
  • autographr() now uses graphlayouts::layout_igraph_multilevel where appropriate
  • Default node labelling now larger and further from nodes in circular layout

Data

  • ison_algebra now an anonymised network (again)

2023-09-17

Package

  • Fixed URL in read_

2023-09-17

Package

  • README now points to migraph earlier

Tutorials

  • Fixed various bugs in first (data) tutorial

Map

  • Fixed explicit node_shape bug

Data

  • Added ison_lawfirm data from Lazega, see documentation for more details
  • Upgraded ison_marvel data to latest igraph specification

2023-08-11

Map

  • Fixed documentation issues with map_palettes

2023-08-11

Package

  • 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 to ison_brandes
    • Consolidated ison_bb, ison_bm, ison_mb, and ison_mm into a list of networks called ison_laterals

Make

Manip

  • Added delete_nodes() for deleting specific nodes
  • Added to_eulerian() function that returns a Eulerian path network, if available, from a given network

Map

  • 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 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 theme_iheid() function that themes graphs with colors based on the Geneva Graduate Institute

2023-06-20

Package

  • Added tutorials for package
    • Moved and updated “data” tutorial from migraph
    • Moved and updated “visualisations” tutorial from migraph

2023-06-09

Package

  • Removed commented out examples
  • Added more detail on what various functions return

Manipulates

  • Added na_to_mean.data.frame()

2023-06-07

Package

  • 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
  • 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

Makes

Manipulates

  • Added as_*() functions, e.g. as_igraph()
    • Fixed as_edgelist.network()
    • Fixed as_network.data.frame()
    • Fixed as_network.tbl_graph()
  • Added join_*() functions, e.g. join_ties()
  • Added add_*() functions, e.g. add_node_attribute()
    • All create_*() functions return tbl_graph class objects
  • Added mutate_*() functions, e.g. mutate_ties()
    • With mutate_ties(), it is no longer necessary to activate(edges)
  • Added rename_*() functions, e.g. rename_ties()
  • Added is_*() functions, e.g. is_dynamic()
    • Fixed is_labelled() to work correctly with multiple network formats
  • 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 method
    • to_subgraphs() now returns a list of tbl_graphs
    • to_reciprocated() now works on edgelists, matrices, tbl_graphs, and networks
    • to_acylic() now works on matrices, tbl_graphs, and networks
  • Added from_*() functions, e.g. from_egos()
  • Added “grab” functions, e.g. network_nodes()

Maps

  • Added autographr(), autographs(), and autographd()
  • Added layout functions
    • Fixed layout_tbl_graph_concentric()