Changes in version 1.1.0 (2026-10-01) This release fixes a number of bugs, rewrites the blockmodeling algorithms and speeds up several functions considerably. Results of signed_blockmodel() and signed_blockmodel_general() differ from earlier versions (see below). Bug fixes - as_adj_complex() now respects the attr argument and works with named vertices. This also fixes laplacian_matrix_complex(), as_incidence_complex() and complex_walks() for attributes other than "type". - laplacian_matrix_signed(sparse = TRUE) no longer errors. Normalized Laplacians (signed and complex) no longer return NaN for isolated vertices. - sample_islands_signed() always returns islands.n * islands.size vertices (previously failed when the highest-numbered vertices had no edges). - balance_score(method = "walk") no longer overflows to NaN on dense networks. balance_score(method = "triangles") returns NA for networks without triangles. - triad_census_signed() returns the census in canonical order. - eigen_centrality_signed() returns a real vector for directed networks (or errors if the dominant eigenvalue is complex). - ggblock() colors ties correctly if only one sign is present. ggsigned(type = "complex") now uses attr for edge colors and no longer overwrites the type attribute. - as_signed_proj() handles vertex names containing "-", "pos" or "neg". - complex_walks() validates k. - signed_blockmodel_general() returned a membership that did not match the reported criterion, and a wrong (even negative) criterion for alpha != 0.5. The meaning of alpha now matches signed_blockmodel(). - signed_blockmodel(annealing = FALSE) no longer returns the random initial partition for networks with large blocks, and it always takes the best improving move. - signed_blockmodel() and signed_blockmodel_general() validate k, alpha and blockmat (square, symmetric for undirected networks). Maintenance - Signed adjacency and incidence matrices are built internally instead of using the deprecated attr argument of igraph. Values of multiple edges are still summed. - Shared input validation. Errors no longer include the internal call. - Triad census lookup tables moved from the R source to internal data (data-raw/triad_tables.R). - Removed unused C++ code and added src/Makevars. - sample_gnp_signed() and sample_bipartite_signed() validate p_neg. - Added examples for ggblock(), ggsigned() and frustration_exact(). - Requires R >= 3.5. Performance - count_signed_triangles(), signed_triangles() and count_complex_triangles() are vectorized (several hundred times faster on networks with many triangles). - as_incidence_complex() and degree_signed() are vectorized and use sparse matrices. complex_walks() is about twice as fast. - graph_circular_signed() computes arc lengths directly from the sampled angles, which also avoids NaNs from rounding errors. - Both blockmodeling functions share a new C++ implementation (greedy local search and simulated annealing) that no longer copies the adjacency matrix for every move. signed_blockmodel(annealing = TRUE) no longer uses stats::optim() and is about 25x faster. Changes in version 1.0.6 (2025-11-06) - fixed a bug in eigenvector centrality calculation Changes in version 1.0.5 (2025-02-05) - fix all deprecated igraph calls Changes in version 1.0.4 (2024-01-08) - fix deprecated support of adjacency matrices with character values #26 Changes in version 1.0.3 (2023-12-15) - code refactoring - more tests #17 - removed deprecated calls to aes_ #23 Changes in version 1.0.2 (2023-09-08) - fixed a bug in signed_triangles() that resulted in wrong vertex ids (#20) Changes in version 1.0.1 (2023-01-27) - fixed an error which occurs with the new version of igraph (https://github.com/igraph/rigraph/pull/633) Changes in version 1.0.0 (2022-12-22) - added code of conduct - added contributing guide - added frustration_exact() to vignette - added utility functions is_signed,graph_from_adjacency_matrix_signed, and graph_from_edgelist_signed() - added random graph models sample_gnp_signed(), sample_bipartite_signed() Changes in version 0.8.1 (2022-10-18) - fixed existing check errors Changes in version 0.8.0 (2022-02-13) - added frustration_exact() to compute the exact number of frustrated edges - fixed issue with aggregate on r-devel Changes in version 0.7.1 (2021-04-28) - fixed #7 - fixed copy paste error in as_unsigned_2mode() - fixed aggregate error in as_signed_proj() Changes in version 0.7.0 (2020-10-21) - added triad_census_signed() Changes in version 0.6.0 (2020-08-13) - added avatar dataset - speed up of blockmodeling for larger networks Changes in version 0.5.3 (2020-06-30) - fixed issue in complex_walks() - fixed faulty calculation of directed pn_index() Changes in version 0.5.2 (2020-03-04) - fixed stringsAsFactors issue in complex_matrices.R Changes in version 0.5.1 (2020-02-04) - fixed C++ issue for circular arc graphs - fixed failing eigen centrality test Changes in version 0.5.0 (2020-01-24) - added vignettes and tests Changes in version 0.1.0 - initial version