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).
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).attr argument of igraph. Values of multiple edges are still summed.data-raw/triad_tables.R).src/Makevars.sample_gnp_signed() and sample_bipartite_signed() validate p_neg.ggblock(), ggsigned() and frustration_exact().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.signed_blockmodel(annealing = TRUE) no longer uses stats::optim() and is about 25x faster.signed_triangles() that resulted in wrong vertex ids (#20)frustration_exact() to vignetteis_signed,graph_from_adjacency_matrix_signed, and graph_from_edgelist_signed()sample_gnp_signed(), sample_bipartite_signed()frustration_exact() to compute the exact number of frustrated edgesas_unsigned_2mode()as_signed_proj()triad_census_signed()avatar datasetcomplex_walks()pn_index()stringsAsFactors issue in complex_matrices.R