Skip to content

v0.4

Compare
Choose a tag to compare
@szhorvat szhorvat released this 03 Apr 09:21
· 346 commits to master since this release
v0.4

New functions:

  • Deterministic graph generators: IGKautzGraph, IGCompleteGraph, IGCompleteAcyclicGraph, IGDeBruijnGraph, IGChordalRing, IGEmptyGraph, IGRealizeDegreeSequence, IGFromPrufer, IGToPrufer, IGKaryTree, IGSymmetricTree, IGBetheLattice, IGTriangularLattice, IGMycielskian, IGExpressionTree, IGShorthand, IGFromNauty.
  • Random graph generators: IGWattsStrogatzGame, IGCallawayTraitsGame, IGEstablishmentGame, IGTreeGame, IGErdosRenyiGameGNM, IGErdosRenyiGameGNP.
  • Weighted graph functions: IGWeightedSimpleGraph, IGWeightedUndirectedGraph, IGWeightedVertexDelete, IGWeightedSubgraph, IGUnweighted, IGDistanceWeighted, IGWeightedAdjacencyGraph, IGVertexWeightedQ, IGEdgeWeightedQ, IGVertexStrength, IGVertexInStrength, IGVertexOutStrength.
  • Community detection: IGCommunitesFluid, IGCommunitiesLeiden.
  • Graph colouring functions: IGVertexColoring, IGEdgeColoring, IGKVertexColoring, IGKEdgeColoring, IGMinimumVertexColoring, IGMinimumEdgeColoring, IGChromaticNumber, IGChromaticIndex, IGVertexColoringQ.
  • Clique cover: IGCliqueCover, IGCliqueCoverNumber.
  • Mesh/graph conversion: IGMeshGraph, IGMeshCellAdjacencyMatrix, IGMeshCellAdjacencyGraph.
  • Lattice generation: IGLatticeMesh, IGTriangularLattice.
  • Proximity graphs: IGDelaunayGraph, IGGabrielGraph, IGRelativeNeighborhoodGraph, IGLuneBetaSkeleton, IGCircleBetaSkeleton.
  • Centralization: IGDegreeCentralization, IGBetweennessCentralization, IGClosenessCentralization, IGEigenvectorCentralization.
  • Planar graphs: IGPlanarQ, IGMaximalPlanarQ, IGOuterplanarQ, IGKuratowskiEdges, IGFaces, IGDualGraph, IGEmbeddingQ, IGPlanarEmbedding, IGOuterplanarEmbedding, IGCoordinatesToEmbedding, IGEmbeddingToCoordinates, IGLayoutPlanar, IGLayoutTutte.
  • Adjacency lists and embeddings: IGAdjacencyList, IGAdjacencyGraph.
  • Spanning trees and other tree-related functionality: IGSpanningTree, IGRandomSpanningTree, IGSpanningTreeCount, IGUnfoldTree, IGTreeQ, IGForestQ, IGTreelikeComponents, IGTreeGame, IGStrahlerNumber, IGOrientTree.
  • Matching functions: IGMaximumMatching, IGMatchingNumber.
  • Dominance: IGDominatorTree, IGImmediateDominators
  • Maximum flow: IGMaximumFlowValue, IGMaximumFlowMatrix.
  • Isomorphism: IGGetIsomorphism and IGGetSubisomorphism (they work with multigraphs), IGColoredSimpleGraph (for transforming multigraph isomorphism to coloured graph isomorphism).
  • Transitivity: IGVertexTransitiveQ, IGEdgeTransitiveQ, IGSymmetricQ, IGDistanceTransitiveQ.
  • Regular graphs: IGRegularQ, IGStronglyRegularQ, IGStronglyRegularParameters, IGDistanceRegularQ, IGIntersectonArray.
  • A framework for easy property transformations and graph styling: IGVertexProp, IGEdgeProp, IGEdgeVertexProp, IGVertexMap, IGEdgeMap, IGVertexPropertyList, IGEdgePropertyList.
  • Import functions: IGImport, IGImportString, $IGImportFormats; support for importing Graph6, Digraph6 and Sparse6.
  • Export functions: IGExport, IGExportString, $IGExportFormats; support for exporting standards-compliant GraphML that can be read by other igraph interfaces (R, Python).
  • Matrix functions: IGZeroDiagonal, IGTakeUpper, IGTakeLower, IGAdjacencyMatrixPlot, IGKirchhoffMatrix, IGJointDegreeMatrix.
  • Bipartite graphs: IGBipartiteIncidenceMatrix, IGBipartiteIncidenceGraph, IGBipartiteProjections.
  • Random walks: IGRandomEdgeWalk, IGRandomEdgeIndexWalk
  • Connectivity: IGGiantComponent, IGMinimalSeparators, IGFindMinimumCuts, IGFindMinimalCuts, IGBridges, IGConnectedComponentSizes, IGWeaklyConnectedComponentSizes, IGGomoryHuTree.
  • Efficiency measures: IGGlobalEfficiency, IGLocalEfficiency, IGAverageLocalEfficiency.
  • Neighbour degrees: IGAverageNeighborDegree, IGAverageDegreeConnectivity
  • Other testing functions: IGTriangleFreeQ, IGSelfComplementaryQ, IGCactusQ,IGNullGraphQ, IGHomeomorphicQ, IGAdjacentVerticesQ.
  • Other new functions: IGNeighborhoodSize, IGCoreness, IGVoronoiCells, IGSmoothen, IGSimpleGraph, IGPartitionsToMembership, IGMembershipToPartitions, IGSinkVertexList, IGSourceVertexList, IGIsolatedVertexList, IGReorderVertices, IGTakeSubgraph, IGDisjointUnion, IGTryUntil, IGVertexAssociate.
  • Added IGIndexEdgeList for retrieving the edge list of a graph in terms of vertex indices. This function is very fast and returns a packed array. It facilitates the efficient implementation of graph processing functions in pure Mathematica code, or interfacing with C libraries.

Updates to existing functions:

  • Community detection: Several functions support the "ClusterCount" option now.
  • IGRewireEdges now supports rewiring only the start or endpoint of directed edges (instead of both).
  • IGBipartiteQ now supports checking that a given partitioning is valid for a bipartite graph.
  • IGBipartitePartitions now provides control over the ordering of partitions using its second argument.
  • Isomorphism functions now ignore the directedness of empty graphs.
  • Isomorphism functions can now take vertex or edge colours from graph attributes.
  • IGBlissCanonicalGraph will now include include vertex colours into its output when appropriate, encoded as the "Color" vertex property.
  • IGDistanceCounts now optionally takes a list of starting vertices.
  • IGBetweenness(Estimate) and IGCloseness(Estimate) now optionally take a set of vertices to do the calculation on.
  • IGBetweenness(Estimate) and IGEdgeBetweenness(Estimate) now have the Normalized option.
  • IGRandomWalk now supports edge weights and the EdgeWeights option. Use EdgeWeights -> None to ignore weights, and thus restore the previous behaviour.
  • Clustering coefficient functions now support the "ExcludeIsolates" option.

Incompatible changes from IGraph/M 0.3:

  • A flat namespace structure is used. Functions from IGraphM`Utilities` have been moved to IGraphM` .
  • Renamed "MultipleEdges" option to MultiEdges for convenient typing and auto-completion.
  • Renamed IGMinSeparators to IGMinimumSeparators.
  • Renamed IGMakeLattice to IGSquareLattice. The name IGMakeLattice works, but it is deprecated.

Other changes:

  • Improved compatibility with Mathematica versions 11.2–12.1; handling of TwoWayRule as an edge specification and support for edge tagged graphs.
  • Bug fixes, performance improvements, documentation updates, and general polish.

Notes: