Fix ASAN checks.
Add protection to fix rchk error.
Improve centralitystress test (#2214).
Fix flaky test.
Update C core to version 0.10.17. Seehttps://github.com/igraph/rigraph/blob/20552ef94aed6ae4b23465ae8c7e4d3b0e558c71/src/vendor/cigraph/CHANGELOG.mdfor a complete changelog, in particular the section “Breakingchanges”.
Generate almost all R implementations (#2047).
Exposealign_layout() and add tolayout_nicely() to align layout with axis automatically(#1907, #1957, #1958).
Exposesimple_cycles() which lists all simple cycles(#1573, #1580).
Exposeis_complete(),is_clique() andis_ivs() (#1316, #1388, #1581).
Exposefind_cycle() (#1471, #1571).
Exposefeedback_vertex_set() to find a minimumfeedback vertex set in a graph (#1446, #1447, #1560).
Addweights parameter tolocal_scan()(#1082, #1448, #1982).
Add more layouts totkplot() (#160, #1967).
Addplot(mark.lwd = ) to change line width ofmark.groups (#306, #1898).
Addplot(vertex.label.angle = , vertex.label.adj = )arguments to rotate vertex labels (#106, #1899).
Add relative size scaling to vertices inplot()(@gvegayon,#172).
Splitsample_bipartite() into two functions for theG(n, m) and G(n, p) case (#630, #1692).
Implement multi attribute assignment (#55, #1916) and addingattributes via data frames (#1373, #1669, #1716). Support factors ingraph_from_data_frame() (#34, #1829).
All_hrg() functions check their argument (#1074,#1699).
HRG printing withtype = "auto" uses"plain" for large trees (#1879).
get_edge_ids() accepts data frames and matrices(#1663).
igraph_version() returns version of C core in anattribute (#1208, #1781).
Breaking change: change arguments default and order forgraph_from_lcf() (#1858, #1872).
Breaking change: Subset assignment of a graph avoids addition ofdouble edges and ignores loops unless the newloopsargument is set toTRUE (#1662, #1661).
Breaking change: remove deprecatedneimode parameterfrombfs() anddfs() (#1105, #1526).
Breaking change: stricter deprecation of non-functionalparameters oflayout_with_kk() andlayout_with_fr() (#1108, #1628).
NA attribute values are replaced with default valuesinplot() (#293, #1707).
NA checking only in from/to columns of edge dataframe (#1906).
Keep vertex attribute type fordisjoint_union()(#1640, #1909).
Error in bipartite projection iftype is not avertex attribute (#898, #1889).
Do not try to destroy non-initialized SIR objects upon error(#1888).
Added properNA handling for matrix inputs (#917,#918, #1828).
Remove string matrix support from functions operating onbiadjacency matrices (#1540, #1542, #1803).
Integer vectors are validated before transferring them to the Clibrary (#1434, #1582).
Changed base location forgraph_from_graphdb() andadded tests (#1712, #1732).
Recycling of logical vectors when indexing into edge/vertexselectors now throws an error (#848, #1731).
Usefunction() instead of(x) inarrow.mode (#1722).
Temporarily disable generating an interface forigraph_simple_cycles_callback() as the framework forhandling callback functions is not yet present.
Adjust loop position to vertex size inplot()(#1980).
Don’t rescale plot coordinates to[-1,1] x [-1,1] bydefault (#1492, #1956, #1962).
Fail if"layout" attribute doesn’t match the numberof vertices (#1880).
Automatically arrange loops inplot() (#407, #556,#1881).
Vectorized drawing of arrows inplot() (#257,#1904).
Allow more than one edge label font family inplot()(#37, #1896).
Pie shapes now work as intended (#1882, #1883).
Loops not plotted on canvas (#1799, #1800).
ReplaceNA values inlabel attributesinplot() with default values (#1796, #1797).
Removed duplicated plotting of arrow heads (#640,#1709).
Correct mapping of edge label properties in plots when loops arepresent (#157, #1706).
Welcome Maëlle Salmon and David Schoch as authors (#1733), addauthor links (#1821).
Remove demos (#2008).
Add 2023 preprint (#1240, #1984).
Update allcontributors info (#1975).
Link to replacements of deprecated functions (#1823).
Add documentation of all file formats toread_graph() andwrite_graph() (#777, #1969).RecommendsaveRDS() andreadRDS() for savingand loading graphs (#1242, #1700).
Document return value ofmake_clusters()(#1794).
Clarify thatgirth() returnsInf foracyclic graphs (
Clarify the use of weights inlayout_with_kk().
Refer to current latest version of R in troubleshootingpage.
Fix typos inlaplacian_matrix()documentation.
Document ellipsis incohesion() (#971,#1985).
Correct the description of theweights parameter ofhits_scores().
Better describe output ofall_shortest_paths()(#1029, #1778).
make_graph() now supports"Groetzsch"as an alias of"Grotzsch". This change was implemented inthe C core.
Update description oforder parameter ofego() and related functions (#1746).
Added lifecycle table (#1525).
Add more about igraph.r2cdocs in the contributing guide (#1686,#1697).
Accelerate check if an index sequence corresponds to the entirelist of vertices (#1427, #1818).
Faster single bracket querying of a graph (#1465,#1658).
Use_pv destroy functions to satisfy ASAN checks(#1630).
Use safe accessor to vector elements (#1633).
graph.isomorphic() withisomorphic() (#1583, #1623).Convertplot.common.Rd to roxygen2 (#1424,#1636).
Remove broken example fromgraph_from_graphdb()manual page (#1622, #1637).
Document argument for NCOL format inread_graph()(#1621).
Make documentation ofdisjoint_union() consistentwith behavior (#1587, #1641).
Add central note about experimental functions (#1624).
adjacent_vertices() andincident_edges() are now correct if the"return.vs.es" option isFALSE (
Fix protection errors reported by rchk (#1592).
Fix the incorrect handling of thesample parameterinsample_motifs() and ensure that the defaultsample.size is integer (#1568).
Clarify what type of graph each community detection functionsupports.
Improve?read_graph and?write_graphdocumentation.
Improveall_simple_paths() documentation.
cluster_optimal() does support directedgraphs.
"return.vs.es" in several functions(@stibu81,#1610).Seehttps://github.com/igraph/rigraph/blob/9828d7b11be330f994f07ae93a071b356eced903/src/vendor/cigraph/CHANGELOG.mdfor a complete changelog, in particular the section “Breakingchanges”.
p.value andp.precision arguments tofit_power_law() to control the computation of the p-value(#1546).as.undirected() signature thanks toeigen_centrality(scale = ) (#1543).Seehttps://github.com/igraph/rigraph/blob/05973441b83decdeab8cc9c500a642c00b924770/src/vendor/cigraph/CHANGELOG.mdfor a complete changelog, in particular the section “Breakingchanges”.
get.edge() andlayout.grid.3d() which have been deprecated for 10 years(#1398).rlang::arg_match() inigraph.match.arg() (#1165).We are working towards a more consistent interface, especially asregards function naming: ultimately we want the igraph functions to usesnake case. Please update your scripts and codebases as soon as youcan.
independence_number() as an alias ofivs_size() (#1522).get_edge_ids() as an alias ofget.edge.ids() (#1510).hub.score() andauthority.score() bothreplaced byhits_scores() (#1352).erdos.renyi.game() andrandom.graph.game() (#1509).fit_power_law(implementation = "plfit.p") tocompute the P-value (#1386).max_degree() (#1403).sample_chung_lu() (#1416).sample_degseq() and addthe"edge.switching.simple" method (#1376).eccentricity() andradius() (#1211).add_shape() (#1478)..from() etc. with behavior similar todplyr::across() (#1436): functions like.from() are meant to be used inside[ but nowif an user misuses them, the error is more informative.graph.lattice() with its replacementmake_lattice() (#1439).deprecated() as default value forcircular argument tomake_lattice()(#1431).subgraph_centrality() now ignores edge directions(#1414).disjoint_union() (#1375).PROTECT() (#1382).R_igraph_community_to_membership2() (#1367).sample_() (#1477).make_() manual page(#1476).is_separator() documentation based on C docs(#1467).?plot.common (sample_degseq() example (#1297).graph_from_adjacency_matrix() examples to avoidwarnings (#1302).\dontrun{} with@examplesIf(#1307).sample_gnp() examples.betweenness() (#1489).centr_eigen_tmax() docs.edge_density() examples relevant.eigen_centrality() documentation.cluster_edge_betweenness() documentation.sample_forestfire() tests and example (#1318).CONTRIBUTING.md(#1423)..igraph.progress() and.igraph.status() more internal (#1516).Seehttps://github.com/igraph/rigraph/blob/3299d31/src/vendor/cigraph/CHANGELOG.mdfor a complete changelog of the bundled C core, andhttps://github.com/igraph/rigraph/compare/f3fa58b..3299d31#diff-aeb78e0159780a9b26daabaf6f95f450b0cfec7161fc735f27ad69145a57dc84for the changes since the igraph 2.0.1. (A permanent link to the mostrecent changelog of the C core used in the R package ishttps://github.com/igraph/rigraph/blob/main/src/vendor/cigraph/CHANGELOG.md.)
voronoi_cells() to compute the Voronoi partitioningof a graph (#1173).rglplot(edge_label = ) (#1267).x11() usage in example happen only in interactivesessions (#1301).min_st_separators() documentation (#1264).@seealso, and use it(#1270).@seealso from?sample_pa(#1268).is_separator() andis_min_separator()(#1263).upgrade_graph() instead of the nonexistingupgrade_version() (#1252).is_bipartite() manual page from other manual page(#1230).CITATION.cff contains only the first three versioncomponents.barabasi.game() withsample_pa() (#1291).are_adjacent(), avoid deprecatedigraph_are_connected() C function (#1254).Seehttps://github.com/igraph/rigraph/blob/f3fa58b/src/vendor/cigraph/CHANGELOG.mdfor a complete changelog of the bundled C core, andhttps://github.com/igraph/rigraph/compare/1bd2bf79..f3fa58b#diff-aeb78e0159780a9b26daabaf6f95f450b0cfec7161fc735f27ad69145a57dc84for the changes since the igraph 2.0.1. (A permanent link to the mostrecent changelog of the C core used in the R package ishttps://github.com/igraph/rigraph/blob/main/src/vendor/cigraph/CHANGELOG.md.)
g + vertices(1, 2, foo = 3) works again, regressionintroduced in igraph 2.0.0 (#1247).sample_pa() respects theout.seq andout.dist arguments again, regression introduced in igraph2.0.0 (#1226).isomorphisms() andsubgraph_isomorphisims(method = "vf2") work again,regression introduced in 2.0.0 (#1219).biconnected_components() now returns edge and vertexsequences again, regression introduced in 2.0.0 (#1213).order andorder.outcomponents returned bydfs(), regression introduced in2.0.0 (#1179).realize_bipartite_degseq() creates a bipartite graphfrom two degree sequences (#1212).is_biconnected() checks if a graph is biconnected(#1204).distances() now supports the Floyd-Warshall algorithm(#1186).mean_distance() docs."dsatur" heuristic forgreedy_vertex_coloring() (#1206).?articulation_points (#1191).isomorphisms() andsubgraph_isomorphisms() (#1225).config.h definesHAVE___UINT128_T(#1216).which program during configuration(#1232).configure manage libxml multiple include paths(#1197).configure (#1235).HAVE_GFORTRAN flag forwin anducrt (#1171).make_empty_graph() is now fully auto-generated(#1068).is.R() which is deprecated in R 4.4.0.-Wltowarnings (#1163).This major release brings development in line with the C core athttps://github.com/igraph/igraph. Seehttps://github.com/igraph/rigraph/blob/1bd2bf79/src/vendor/cigraph/CHANGELOG.mdfor a complete changelog, in particular the section “Breaking changes”.(A permanent link to the most recent changelog of the C core used in theR package ishttps://github.com/igraph/rigraph/blob/main/src/vendor/cigraph/CHANGELOG.md.)
Version 1.6.0 of the R package used version 0.9.9 of the C core. Thechanges in the 0.10 series of the C core are relevant for version 2.0.0of the R package, but not all C core functions are exposed in the Rinterface. Changes to the implementation of some functions in the C coremay be reflected in functions in the R package.
The change log below is a summary of the additional changes in the Rinterface.
get.edge.ids(multi = TRUE) andas_adjacency_matrix(edges = ) are no longer supported(#1101, #1080).
RemoveNA padding fordfs(unreachable = FALSE)$order and$order.outand forbfs(unreachable = FALSE)$order, also forigraph_options(return.vs.es = FALSE) (#1062,#1124).
laplacian_matrix(normalized = TRUE) uses a differentnormalization method (#1102).
fit_power_law() no longer returns aKS.p component.
Remove default value forloops argument ofcentr_degree_tmax() (#1114).
as_adjacency_matrix() no longer supports attributesof typecharacter (#1072).
Removegraph.isomorphic.34() (#1065,#1067).
Uselifecycle::deprecate_soft() for most deprecatedfunctions (#1024, #1025, #1104).
The system libraries GLPK, GMP, and libxml2 are now mandatory forcompiling from source.
Add scalar conversion checks in a few critical places(#1069).
Check that we receive a scalar when expecting a scalar in C code(#1051).
Check that matrix sizes are in the supported range before passingthem to R (#1066).
transitivity() now produces a named vector in thelocal (weighted) case (#1057).
plot() correctly computes intersections betweenedges and rectangle vertices (#1021).
Fix compilation on Windows with spaces in the Rtools path(#1000).
Use 30 bits of R’s RNG (#1079).
Breaking change: RemoveNA padding fordfs(unreachable = FALSE)$order and$order.outand forbfs(unreachable = FALSE)$order, also forigraph_options(return.vs.es = FALSE) (#1062,#1124).
Newk_shortest_paths() to compute the first kshortest paths between two vertices (#1028).
Add GitHub bug report form.
Newvignette("deprecated-dot-case") that listsdeprecated functions and their alternatives (#1013).
Move deprecation badge to top of doc pages.
Remove usage ofget.adjacency() from intro vignettes(#1084).
Fix math formatting infit_power_law()docs.
Fix incorrect usage insubgraph.edges()example.
Clarify that Infomap considers edge directions.
Improve edge connectivity docs (#1119).
Add some missing diacritics.
Use[] assignment for converting matrices(#1035).
Move towards autogenerating all bindings (#1043).
Use %||% from rlang (#1112).
Replace loop bylapply() when returning vertex andedge sets (#1033).
Do not duplicate prototypes, use a common header forrinterface.c andrinterface_extra.c(#1055).
Clean up some auto-generation code (#1031), remove unused partsfrom code generation (#1032), eliminate the use of some deprecated Cfunctions.
Use integers for mode enum incluster_label_prop().
Standardize the handling of some stimulus enum types(#1064).
Remove unused vectorlist / matrixlist destructors(#1070).
Remove unused stimulus type VERTEXSETLIST_INT (#1049).
Remove unused types (#1060).
Fix Stimulus definitions (#997).
Avoid deprecatedR_igraph_automorphisms()(#999).
Use new ARPACK_DEFAULTS symbol from C core for default arpackoptions.
Ignore upstream CITATION file to avoid R CMD check NOTE(#1007).
Add Aviator configuration.
Addas_biadjacency_matrix() tests for named vectors(#1154, #1155).
Test transferring colors in isomorphism functions(#1050).
Newarpack_defaults() replacesigraph.arpack.default andarpack_defaultslists (#800), with consistent usage checks (#966).
Define methods forape::as.phylo() instead of ownas_phylo() generic, remove deprecatedasPhylo() (#763).
bfs() with unreachable nodes returns zero instead ofNaN asrank (#956), and negative instead ofNaN fordist (#926).
random_walk() adds one more step, the resulting listof vertices is of lengthsteps + 1 (#934).
girth() returnsInf for acyclic graphs(#931).
Remove some behaviour / parameters that were deprecated in 1.3(#842).
Removescg_eps(),scg_group() andscg_semi_proj(), broken and no longer maintained(#946).
Fixprintf() warning (#975).
Fix calls toisSymmetric() for matrix objects with aclass (#965).
Reduce frequency of interruption checks (#957).
Change “incidence matrix” naming to “biadjacency matrix”(#962).
Add aliases using the neighborhood terminology for all egofunctions: (#950).
Rename arguments toassortativity(values, values.in)fromtypes1 andtypes2 (#952).
Add ellipsis tocluster_label_prop()(#954).
Placeholders foris_acyclic() andis_forest(), to be implemented in igraph 2.0.0(#945).
is_tree(details = TRUE) designates the first vertexas root for non-trees (#935).
all_shortest_paths() returns the vertex list in bothres andvpaths components (#930).
Improve symmetry check for adjacency matrices on input(#911).
Warn if non-symmetric undirected adjacency matrix(#904).
Remove duplicate\seealso{} (#948).
Updateknnk() andsir() docs.
Fix formula inreciprocity() docs.
strength() does not give a warning when no weightsare given.
Updatesample_smallworld() manual page(#895).
Correct documentation for weighted cliques.
Update Erdos-Renyi model docs.
Clean up tests (#967).
Stabilize tests forcluster_label_prop() (#932),sample_pa() (#927),cluster_louvain() (#933),SIR (#936),sample_forestfire() (#929).
Hard-code graph used in test (#928).
Update GML test file (#925).
Improve test for sampling from Dirichlet distribution(#923).
Omit test that no longer holds with igraph 0.10 (#922).
Stabilize test in preparation for upgrade (#920).
Stabilize plot test (#919).
Fix checks.
estimate_betweenness(),estimate_edge_betweenness(),estimate_closeness() (#852).identical_graphs() now correctly detects identicalgraphs without node or edge attributes (#757).Change ownership rules of attribute objects (#870).
R_SEXP_to_igraph() andR_SEXP_to_igraph_copy() getigraph_t objectfrom external pointer (#865).
RemoveETIME() call from Fortran code, already inCRAN version 1.5.0.1 (#858).
Ensure that_GNU_SOURCE is always defined(#877).
Fixmake clean (#860).
Fix generation of code for functions withVERTEX_COLOR out-arguments (#850).
Use-lquadmath inMakevars.win, forcompatibility with alternative R distributions such as Microsoft R Open(#855).
getRversion() uses strings.
Add cffr file and a GHA workflow that updates it automatically(#873).
Undeprecateneighborhood() (#851).
Remove redundant reference to AUTHORS from DESCRIPTION.
estimate_betweenness(),estimate_edge_betweenness(),estimate_closeness() (#852).The internal format of graph objects has changed in a mostlybackward-compatible way, to prepare for upgrading the C core to 0.10.Details are described athttps://github.com/igraph/rigraph/wiki/The-igraph-object-format.Accessing graph objects that have been created with an older igraphversion give a clean error message with instructions (#832). The newformat cannot be read by igraph 1.4.3 or older, the following error israised when trying to do so:
This graph was created by an old(er) igraph version. Call upgrade_graph() on it to use with the current igraph version For now we convert it on the fly...Error in is_directed(object) : REAL() can only be applied to a 'numeric', not a 'NULL'The only supported remedy is to upgrade the igraph package to version1.5.0 or later.
graph_version() now returns an integer scalar (#832,#847),4 as of igraph 1.5.0 (#835).
Vertex and edge sequences are converted to numeric vectors whenused in attributes (#808).
Newlargest_component() returns the largestconnected component (#786,
make_graph() whensimplify = ... is used with a non-formula (#834).Add more tests forgraph_from_literal()(#826).
Reenable serialization test and tests fordyad_census(), stabilize tests (#809, #822, #823).
The documentation for the R package is now hosted athttps://r.igraph.org/(#780).
Updatevignette("installation-troubleshooting").
Fix use of deprecated functions in examples, e.g., replacegsize() byecount() (#827).
Fix typos in?eigen_centrality docs (
Update CONTRIBUTING.md and ORCID information (#791,#774).
Add DOI to CITATION (#773).
Add data for old igraph versions as constructed objects, andtests (#838).
Ensure we’re always using named indexes to access the internaldata structure (#784).
Prepare migration to igraph/C 0.10 (#781).
Update generated interface (#765).
Fix tests for dev waldo (#779,
Fix linking on Windows: gfortran needs quadmath. (#778).
Removeigraph.eigen.default() andeigen_defaults, introduce internaleigen_defaults() as a function (#741).
Remove brokennexus*() functions (#705), andsrand() (#701).
Update C core.
ARPACK-based calculations are now interruptible.
shortest_paths() andall_shortest_paths() no longer crash when an invalidfrom vertex is passed and weights are being used.
Seedifffor details.
Use true vertex names for printing vertex sets. If a vertex setcaptures a relationship between vertices (e.g., thefathercomponent ofbfs()), the vertex set is printed as a namedvector (#754).
Suggest restarting R session after fatal error (#745).
as_long_data_frame() now correctly processes vertexattributes and works with graphs without vertex attributes(#748).
as.hclust(hrg.fit(g)) works again (#721).
The documentation is now available athttps://igraph.org/(#743).
Reorganize function reference (#662).
Replacegraph() withmake_graph() inexamples (#738).
Add docs foras.hclust.igraphHRG() (#733).
Merged man page ofhub_score() andauthority_score() (#698).
Refactor contributors listing (#647).
Improve “family” titles (#679).
Improve docs of ego/neighborhood functions.
Improvetransitivity() docs.
Introduce cpp11 package to improve error handling in the long run(#720).
Avoid longjmp for error handling and interrupts (#751).
as.hclust.igraphHRG uses.Call()interface (#727).
console() now works again and provides a Tcl/Tkbased UI where igraph can post status messages and progress info(#664).
Fix errors when printing long vertex names (#677,
Fix regression that broke builds on some systems (e.g., GCCversion 5 or earlier), introduced in igraph 1.4.0 (#670, #671).
fit_hrg() does not crash any more when called with agraph that has less than three vertices.
Fix warning aboutyyget_leng() returning wrong typewhen using LTO (#676).
Don’t mention C++11 or C++17 for best compatibility with bothnewest R and older compilers, while still requesting a C++ compiler forlinking.
Don’t ignorebuild/ when building the packagebecause the vignette index is built there.
Skip plot test entirely on R-devel.
Avoid submodules for building igraph (#674).
Makevars cleanup (#671).
Add Zenodo configuration file.
tkplot() gained apalette argument and itis now using the same palette asplot() by default, forsake of consistency.plot.igraph() gained aloop.size argumentthat can be used to scale the common radius of the loop edges.cluster_leading_eigen().igraph_version() returned an invalid value in 1.3.4,this is now corrected.par(xpd=...) is now restored afterplotting a graph.as.dendrogram.communities() for largedendrograms, thanks tograph_from_incidence_matrix() thatprevented the creation of directed graphs withmode="all"from dense or sparse matrices.dfs() accidentally returned zero-based root vertexindices in the result object; this is now fixed and the indices are now1-based.as_graphnel() does not duplicate loop edges anymore.as_graphnel() now checks that the input graph has nomulti-edges. Multi-edges are not supported by the graphNEL class.convex_hull() now returns the vertices of the convexhull with 1-based indexing.rgl.*() function calls in the codebase werereplaced with equivalent*3d() function calls inpreparation for upcoming deprecations inrgl (see PR#619)plot.igraph() does not use theframe=...partial argument any more when callingplot.default(). ThedefaultNULL value offrame.plot is now alsohandled correctly.hub_score() andauthority_score()considered self-loops only once on the diagonal of the adjacency matrixof undirected graphs, thus the result was not identical to that obtainedbyeigen_centrality() on loopy undirected graphs. This isnow corrected.distances() no longer ignores themodeparameter whenalgorithm='johnson'.automorphisms() was renamed tocount_automorphisms(); the old name is still available, butit is deprecated.main branchdirectly.pkgdown thanks to@maelle (see #645).This will eventually become the official homepage.Added:
mark.groups=... argument ofplot.igraph()now acceptscommunities objectsFixed:
Negative degree exponents are not allowed any more insample_pa() andsample_aging_pa().
Package updated to be compatible with Matrix 1.5.
Other:
Added:
sample_asym_pref() now returns the generated types ofthe vertices in the vertex attributes namedouttype andintype.Fixed:
layout_nicely() does not recurse infinitely any moreif it is assigned to thelayout attribute of agraph
layout_nicely() now ignores edge weights when thereare non-positive edge weights. This is needed because igraph 1.3.3started validating edge weights inlayout_with_fr() andlayout_with_drl(), resulting in errors whenlayout_nicely() was used on weighted graphs with negativeweights. Sincelayout_nicely() is the default layoutalgorithm forplot(), most users were not even aware thatthey were using the FR or DrL layouts behind the scenes. Now the policyis thatlayout_nicely() attempts to get the job donewithout errors if possible, even if that means that edge weights must beignored. A warning is printed if this is the case.
Added:
reverse_edges() reverses specific or all edges in agraph.
Single-bracket indexing ofV() andE()resolves attribute names in the indexing expressions by default (forinstance,E(g)[weight > x] matches edges with a weightlarger than a threshold). This can be problematic if the attribute masksone of the variables in the local evaluation context. We now have apronoun called.env (similarly torlang::.env)that allows you to force attribute name lookup to the callingenvironment. For sake of completeness, we also provide.data (similarly torlang::.data) to forceattribute name lookup to the vertex / edge attributes only. Thesepronouns are automatically injected into the environment where theindexing expression is evaluated.
Deprecated:
V() orE() indexing start with a dot since igraph 1.1.1; however,the old dotless names did not print a deprecation warning so this mayhave gone unnoticed for years. We are introducting a deprecation warningfornei(),innei(),outnei(),inc(),from() andto() insidesingle-bracket indexing of vertex and edge sequences and will remove theold variants soon.The C core is updated to 0.9.9, fixing a range of bugs.
Fixed:
communities objects is nowreported correctly.layout_with_kk() would fail to produce reasonableresults with the default initial coordinates. This has been corrected,however, this function no longer produces precisely the same output fora given graph as before. To restore the previous behaviour, uselayout_with_kk(g, coord=layout_in_circle(g)) in 2D orlayout_with_kk(g, dim=3, coord=layout_on_sphere(g)) in3D.igraph.vs object withv[x, na_ok=T] now correctly handles thena_okargument in all cases; previous versions ignored it whenxwas a single number.Other:
Fixed:
graph_from_adjacency_matrix() now works with sparsematrices even if the cell values in the sparse matrix areunspecified.cluster_walktrap() whenmodularity=FALSE andmembership=FALSE.cluster_walktrap() no longer accepts invalid weightvectors.cluster_walktrap() no longer returns a modularityvector of invalid length for disconnected graphs. This also fixes somerare failures of this function on weighted disconnected graphs.edge_attr() does not ignore itsindex=...argument any more.automorphisms(),automorphism_group() andcanonical_permutation() now allow all possible valuessupported by the C core in thesh argument. Earlierversions supported only"fm".vertex.frame.width plotting parameter now allowszero and negative values; these will simply remove the outline of thecorresponding vertex.sh argument of the BLISSisomorphism algorithm inisomorphic() was fixed; earlierversions incorrectly referred tosh1 andsh2.dominator_tree() now conforms to its documentation withrespect to thedom component of the result: it contains theindices of the dominator vertices for each vertex and-1for the root of the dominator tree."power" algorithm ofpage_rank() have been removed from the documentation, asthis method is no longer available.The C core is updated to 0.9.7, fixing a range of bugs andintroducing a number of new functions.
Added:
has_eulerian_path() andhas_eulerian_cycle() decides whether there is an Eulerianpath or cycle in the graph.eulerian_path() andeulerian_cycle()returns the edges and vertices in an Eulerian path or cycle in thegraph.any_loop() checks whether a graph contains at least oneloop edge.is_tree() checks whether a graph is a tree and alsofinds a possible rootto_prufer() converts a tree graph into its Prufersequencemake_from_prufer() creates a tree graph from its Prufersequencesample_tree() to sample labelled trees uniformly atrandomsample_spanning_tree() to sample spanning trees of anundirected graph uniformly at randomautomorphisms() andcanonical_permutation() now supports vertex colorsrandom_edge_walk() to record the edges traversed duringa random walkharmonic_centrality() calculates the harmoniccentrality of vertices, optionally with a cutoff on path lengthsmean_distance() now supports edge weights and it canalso return the number of unconnected vertex pairs whendetails=TRUE is passed as an argumentgreedy_vertex_coloring() finds vertex colorings basedon a simple greedy algorithm.bridges() finds the bridges (cut-edges) of a graphframe.width vertexattribute or thevertex.frame.width keyword argument,thanks toautomorphism_group() returns a possible (notnecessarily minimal) generating set of the automorphism group of agraph.global_efficiency() calculates the global efficiency ofthe graph.local_efficiency() calculates the local efficiency ofeach vertex in a graph.average_local_efficiency() calculates the average localefficiency across the set of vertices in a graph.rewire(each_edge(...)) now supports rewiring only oneendpoint of each edge.realize_degseq() generates graphs from degree sequencesin a deterministic manner. It is also available asmake_(degseq(..., deterministic=TRUE)).clique_size_counts() counts cliques of different sizeswithout storing them all.feedback_arc_set() finds a minimum-weight feedback arcset in a graph, either with an exact integer programming algorithm orwith a linear-time approximation.make_bipartite_graph() now handles vertices withnames.shortest_paths() now supports graphs with negative edgeweights.min_cut() now supports s-t mincuts even ifvalue.only=FALSE.as.matrix() now supports converting an igraph graph toan adjacency or edge list matrix representation. Seeas.matrix.igraph() for more details. This function wasmigrated fromintergraph; thanks to Michal Bojanowski.Fixed:
is_connected() now returns FALSE for the nullgraphlength() on a graph now returns the number ofvertices to make it consistent with indexing the graph with[[.diameter() now corrently returns infinity fordisconnected graphs whenunconnected=FALSE. Previousversions returned the number of vertices plus one, which was clearlyinvalid for weighted graphs.mean_distance() now correctly treats the path lengthbetween disconnected vertices as infinite whenunconnected=FALSE. Previous versions used the number ofvertices plus one, adding a bias towards this number, even if the graphwas weighted and the number of vertices plus one was not a path lengththat could safely have been considered as being longer than any “valid”path.layout_with_sugiyama() now handles the case of exactlyone extra virtual node correctly; fixes #85bfs() anddfs() callback functions nowcorrectly receive 1-based vertex indices and ranks; it used to bezero-based in earlier versionsbfs()ordfs() callback does not crash R any moreprint() on a graph with a smallmax.lines value (smaller than the number of lines needed toprint the attribute list and the header) does not raise an error anymore; fixes #179as_adjacency_matrix(edges=TRUE, sparse=TRUE) nowconsistently returns the last edge ID for each cell in the matrixinstead of summing them.+ and- operators with apath() object consisting of two vertices is now handledcorrectly; fixes #355topo_sort() now throws an error if the input graph isnot acyclic instead of returning an incorrect partial ordering.transitivity(mode="barrat") now throw an error formultigraphs; the implementation does not work correctly for multigraphsand earlier versions did not warn about this.Changed:
neimode argument ofbfs() anddfs() was renamed tomode for sake ofconsistency with other functions. The old argument name is deprecatedand will be removed in 1.4.0.bfs() anddfs() callback functions nowcorrectly receive 1-based vertex indices and ranks; it used to bezero-based in earlier versions. (This is actually a bugfix so it’s alsomentioned in the “Fixed” section).closeness(),betweenness() andedge_betweenness() now all take acutoffargument on their own.estimate_closeness(),estimate_betweenness() andestimate_edge_betweenness() became aliases, with identicalsignature. They arenot deprecated but their implementationmight change in future versions to provide proper estimation schemesinstead of a simple cutoff-based approximation. If you explicitly needcutoffs and you want your results to be reproducible with futureversions, usecloseness(),betweenness() andedge_betweenness() in your code with acutoffargument.closeness() now only considersreachablevertices during the calculation; in other words, closeness centrality isnow calculated on a per-component basis for disconnected graphs. Earlierversions consideredall vertices.Deprecated:
cutoff=0 forcloseness(),betweenness() andedge_betweenness() isdeprecated; if you want exact scores, use a negative cutoff.cutoff=0 will be interpreted literally from igraph1.4.0.centr_degree_tmax() now prints a warning when it isinvoked without an explicitloops argument.loops will be mandatory from igraph 1.4.0.nexus_list(),nexus_info(),nexus_get() andnexus_search() functions nowreturn an error informing the user that the Nexus graph repository hasbeen taken offline (actually, several years ago). These functions willbe removed in 1.4.0.edges argument ofas_adjacency_matrix() is deprecated; it will be removed inigraph 1.4.0.Removed:
page_rank_old() function and thedeprecatedpower method ofpage_rank() wereremoved.Dec 27, 2021
No user visible changes.
Dec 14, 2021
Fixed:
igraph were accidentally builtwithout GraphML support on CRAN; this should now be fixed.Nov 22, 2021
No user visible changes.
Oct 26, 2021
No user visible changes.
Oct 15, 2021
The C core is updated to 0.8.5, fixing a range of bugs andintroducing a number of new functions.
Added:
Fixed:
make_lattice() correctly roundslength tothe nearest integer while printing a warning (#115).make_empty_graph(NULL) now prints an error instead ofproducing an invalid graph (#404).make_graph(c()) now produces an empty graph instead ofprinting a misleading error message (#431).types argument of functions related to bipartitegraphs now prints a warning when the types are coerced to booleans(#476).layout_with_sugiyama() returns a layout of type matrixeven if there is only one vertex in the graph (#408).Deprecated:
membership argument ofmodularity.matrix() is now deprecated as the function neverneeded it anyway.modularity() now prints a warning when it is applied ona directed graph because the implementation in igraph’s C core does notsupport directed graphs as of version 0.8.5. The warning will be turnedinto an error in the next minor (1.3.0) version of the R interface; theerror will be removed later when the C core is updated to a version thatsupports modularity for directed networks.transitivity() now prints a warning when its localvariant (type="local") is called on a directed graph or agraph with multiple edges beecause the implementation in the C core ofigraph does not work reliably in these cases as of version 0.8.5. Thewarning will be turned into an error in the next minor (1.3.0) versionof the R interface; the error will be removed later when the C core isupdated to a version that supports transitivity for networks withmultiple edges.Misc:
Oct 5, 2020
No user visible changes.
Mar 27, 2020
No user visible changes.
Feb 13, 2019
No user visible changes.
Jan 27, 2019
No user visible changes.
Jul 27, 2018
No user visible changes.
cluster_optimal() function does not work. Unfortunately wecannot bundle the GLPK library into igraph on CRAN any more, becauseCRAN maintainers forbid the pragmas in its source code.Jul 20, 2017
Jul 13, 2017
graph_idfunction was addededge_attr for some index valuesbfs() bug,restricted argument waszero-basedmatch_vertices is exported now%>% is re-exported in a better way, to avoidinterference with other packagesego_ functions default toorder = 1nowigraph_with_opt to run code with temporaryigraph options settingssample_asym_pref functioncurve_multiple to avoid warnings for graphs withself-loops.NMF package is only suggested now, it is not a harddependencypkgconfig package for options. This allowssetting options on a per-package basis. E.g. a package using igraph cansetreturn.vs.es toFALSE in its.onLoad() function, and then igraph will return plainnumeric vectors instead of vertex/edge sequencesif called from thispackage.igraph_options() returns theold values of theupdated options, this is actually useful, returning the new values wasnot.with_igraph_opt() function to temporarily change valuesof igraph options.get.edge() is deprecated, useends()instead. (This was already the case for igraph 1.0.0, but we forgot toadd a NEWS point for it.).Call(), to make native callsfaster.anyNA() call, to be compatible with older Rversions.head_of() andtail_of(), they weremixed up.label.dist independent of label lengths,fixes #63.R CMD checkNOTEs.modularity().str.igraph() toprint_all().V() orE() indexing now begin with a dot. Old names aredeprecated. New names:.nei(),.innei(),.outnei(),.inc(),.from(),.to(). #22layout_with_dh,layout_with_gem andlayout_with_sugiyama. Theycrashed in some cases.June 26, 2015
Some minor updates:
June 21, 2015
This is a new major version of igraph, and then why not call it1.0.0. This does not mean that it is ready, it’ll never be ready.
The biggest changes in the release are - the new function names. Mostfunctions were renamed to make them more consistent and readable.(Relax, old names can still be used, no need to update any code.) -Better operations for vertex and edge sequences. Most functions returnproper vertex/edge sequences instead of numeric ids. - The versatilemake_() andmake_graph() functions to creategraphs.
make_graph() function to create graphs.layout_() (not the underscore!) function tocreate graph layouts, see alsoadd_layout_().upgrade_graph() on graphs created with previous igraphversions.[[ operator now, foreasy viewing of vertex/edge metadata.as_ids() function to convert them to simpleids.layout_with_dh().layout_with_gem().mindist parameter for thesmallest distance to consider.all_simple_paths() function to list all simple paths ina graph.triangles() lists all triangles in a graph.local_scan() function calculates scan statistics.embed_adjacency_matrix() andembed_laplacian_matrix().*, the same graph multiple times. Canbe also used asrep().random_walk()adjacent_vertices() andincident_edges()functions, they are vectorized, as opposed toneighhors()andincident().as_long_data_frame().Too many to list. Please try if your issue was fixed and (re-)reportit if not. Thanks!
April 21, 2014
Some bug fixes, to make sure that the code included in ‘StatisticalAnalysis of Network Data with R’ works. Seehttps://github.com/kolaczyk/sand
l, notx, which is for complex attributes.Issue #578.communities objects, seecreate.communities(). Issue #547.constaint(), issue #580.simplify argument ofgraph.formula(), which was broken, issue #586.crossing() adds better names to theresult, fixes issue #587.sir() function gives an error if the input graph isnot simple, fixes issue #582.February 4, 2014
There are a bunch of new features in the library itself, and otherimportant changes in the life of the project. Thanks everyone forsending code and reporting bugs!
igraph’s development has moved from Launchpad to github. This hasactually happened several month ago, but never announced officially. Theplace for reporting bugs is athttps://github.com/igraph/igraph/issues.
igraph’s homepage is now hosted at http://igraph.org, and it is brandnew. We wanted to make it easier to use and modern.
You can download nightly builds from igraph athttp://igraph.org/nightly. Source and binary R packages (for windows andOSX), are all built.
demo(hrg).mod.matrix().layout.bipartite() function, a simple two-columnlayout for bipartite graphs.barabasi.game(), algorithmpsumtree-multiple just froze.layout.mds() by default returns a layoutmatrix now.plot.communities() (plot.igraph(), really)draws a border around the marked groups by default.name graph attributeto charactervertex.attriubutes(),graph.attributes() andedge.attributes().graph.disjoint.union() handles attributesnow.graph.union() to handle attributesproperly.rewire(): now supports the generation and destructionof loops.bipartite.random.game().get_shortest_paths(), reorganized the output ofget.shortest.paths() completely.graphlets() and related functions.bonpow() andalpha.centrality() andmake sure that the sparse solver is called.tkplot() news: enable setting coordinates from thecommand line viatkplot.setcoords() and access to thecanvas viatkplot.canvas().igraph_edge_connectivity(),because of an un-initialized variable in the C code.closeness() and relatedfunctions.bipartite.projection().graphNEL conversion functions only load the ‘graph’package if it was not loaded before and they load it at the end of thesearch path, to minimize conflicts.graph.bfs() andgraph.dfs().is.chordal().centralization.closeness.tmax().arpack() now gives error message if unknownoptions are given.igraphtest() function.add.edges() does not allow now zeros in thevertex set.adjacent.triangles().graph.eigen() function, eigenproblems onadjacency matrices.decompose.graph() andgraph.neighborhood() useit. Fixes issue #508.optimal.community(), closes#511.graph.intersection.by.name(),graph.union.by.name(),graph.difference.by.name().+ operator on graphs now callsgraph.union() if both argument graphs are named, and callsgraph.disjoint.union() otherwise.igraph.version().sbm.game().set.vertex/edge.attribute bug that changed bothgraph objects, after copying (#533)barabasi.game that caused crashes.'which argument tobipartite.projection (#307).normalized argument to closeness functions, fixesissue #3.[[ onvertex/edge sets, fixes #231.start argument inhrg.fit(#225).graph.density that resulted in incorrectvalues for undirected graphs with loopsgraph.decompose), causing #550.graph.adjacency bugs for graphs with oneedge, and graphs with zero edges.graph.adjacency bug for undirected, weightedgraphs and sparse matrices.main,sub,xlab andylab are proper graphics parameters now (#555).graph.data.frame coerces arguments to data frame(#557).sir function.graph.mincut and relatedfunctions.graph.bfs (#575).Released Oct 28, 2013
Some bugs fixed:
Released May 16, 2013
Worked two CRAN check problems, and a gfortran bug (string boundchecking does not work if code is called from C and without stringlength arguments at the “right” place).
Otherwise identical to 0.6.5-1.
Released February 27, 2013
Fixing an annoying bug, that broke two other packages on CRAN:
Released February 24, 2013
This is a minor release, to fix some very annoying bugs in 0.6.4:
Released February 2, 2013
The version number is not a mistake, we jump to 0.6.4 from 0.6, fortechnical reasons. This version was actually never really released, butsome R packages of this version were uploaded to CRAN, so we includethis version in this NEW file.
Added a vertex shape API for defining new vertex shapes, and alsoa couple of new vertex shapes.
Added the get.data.frame() function, opposite ofgraph.data.frame().
Added bipartite support to the Pajek reader and writer, closesbug #1042298.
degree.sequence.game() has a new method now:“simple_no_multiple”.
Added the is.degree.sequence() and is.graphical.degree.sequence()functions.
rewire() has a new method: “loops”, that can create loopedges.
Walktrap community detection now handles isolates.
layout.mds() returns a layout matrix now.
layout.mds() uses LAPACK instead of ARPACK.
Handle the ‘~’ character in write.graph and read.graph. Bug#1066986.
Added k.regular.game().
Use vertex names to plot if no labels are specified in thefunction call or as vertex attributes. Fixes issue #1085431.
power.law.fit() can now use a C implementation.
Fixed a bug in barabasi.game() when out.seq was an emptyvector.
Fixed a bug that made functions with a progress bar fail ifcalled from another package.
Fixed a bug when creating graphs from a weighted integeradjacency matrix via graph.adjacency(). Bug #1019624.
Fixed overflow issues in centralization calculations.
Fixed a minimal.st.separators() bug, some vertex sets wereincorrectly reported as separators. Bug #1033045.
Fixed a bug that mishandled vertex colors in VF2 isomorphismfunctions. Bug #1032819.
Pajek exporter now always quotes strings, thanks to Elena TeaRusso.
Fixed a bug with handling small edge weights in shortest pathscalculation in shortest.paths() (Dijkstra’s algorithm.) Thanks to MartinJ Reed.
Weighted transitivity uses V(graph) as ‘vids’ if it isNULL.
Fixed a bug when ‘pie’ vertices were drawn together with othervertex shapes.
Speed up printing graphs.
Speed up attribute queries and other basic operations, byavoiding copying of the graph. Bug #1043616.
Fixed a bug in the NCV setting for ARPACK functions. It cannot bebigger than the matrix size.
layout.merge()’s DLA mode has better defaults now.
Fixed a bug in layout.mds() that resulted vertices on top of eachother.
Fixed a bug in layout.spring(), it was not workingproperly.
Fixed layout.svd(), which was completely defunct.
Fixed a bug in layout.graphopt() that caused warnings and on someplatforms crashes.
Fixed community.to.membership(). Bug #1022850.
Fixed a graph.incidence() crash if it was called with anon-matrix argument.
Fixed a get.shortest.paths bug, when output was set to“both”.
Motif finding functions return NA for isomorphism classes thatare not motifs (i.e. not connected). Fixes bug #1050859.
Fixed get.adjacency() when attr is given, and the attribute hassome complex type. Bug #1025799.
Fixed attribute name in graph.adjacency() for dense matrices. Bug#1066952.
Fixed erratic behavior of alpha.centrality().
Fixed igraph indexing, when attr is given. Bug #1073705.
Fixed a bug when calculating the largest cliques of a directedgraph. Bug #1073800.
Fixed a bug in the maximal clique search, closes#1074402.
Warn for negative weights when calculating PageRank.
Fixed dense, unweighted graph.adjacency when diag=FALSE. Closesissue #1077425.
Fixed a bug in eccentricity() and radius(), the results wereoften simply wrong.
Fixed a bug in get.all.shortest.paths() when some edges had zeroweight.
graph.data.frame() is more careful when vertex names are numbers,to avoid their scientific notation. Fixes issue #1082221.
Better check for NAs in vertex names. Fixes issue#1087215
Fixed a potential crash in the DrL layout generator.
Fixed a bug in the Reingold-Tilford layout when the graph isdirected and mode != ALL.
Released June 11, 2012
See also the release notes athttp://igraph.sf.net/relnotes-0.6.html
Released November 22, 2009
Released April 10, 2009
See also the release notes athttp://igraph.sf.net/relnotes-0.5.2.html
Released July 14, 2008
See also the release notes athttp://igraph.sf.net/relnotes-0.5.1.html
Released February 14, 2008
See also the release notes athttp://igraph.sf.net/relnotes-0.5.html
The ‘rescale’, ‘asp’ and ‘frame’ graphical parameters wereadded
Create graphs from a formula notation (graph.formula)
Handle graph attributes properly
Calculate the actual minimum cut for undirected graphs
Adjacency lists, get.adjlist and get.adjedgelist added
Eigenvector centrality computation is much faster now
Proper R warnings, instead of writing the warning to theterminal
R checks graphical parameters now, the unknown ones are not justignored, but an error message is given
plot.igraph has an ‘add’ argument now to compose plots withmultiple graphs
plot.igraph supports the ‘main’ and ‘sub’ arguments
layout.norm is public now, it can normalize a layout
It is possible to supply startup positions to layoutgenerators
Always free memory when CTRL+C/ESC is pressed, in all operatingsystems
plot.igraph can plot square vertices now, see the ‘shape’parameter
graph.adjacency rewritten when creating weighted graphs
We use match.arg whenever possible. This means that characterscalar options can be abbreviated and they are always caseinsensitive
VF2 graph isomorphism routines can check subgraph isomorphismnow, and they are able to return matching(s)
The BLISS graph isomorphism algorithm is included in igraph now.See canonical.permutation, graph.isomorphic.bliss
We use ARPACK for eigenvalue/eigenvector calculation. This meansthat the following functions were rewritten: page.rank,leading.eigenvector.community.*, evcent. New functions based on ARPACK:hub.score, authority.score, arpack.
Edge weights for Fruchterman-Reingold layout(layout.fruchterman.reingold).
Line graph calculation (line.graph)
Kautz and de Bruijn graph generators (graph.kautz,graph.de.bruijn)
Support for writing graphs in DOT format
Jaccard and Dice similarity coefficients added(similarity.jaccard, similarity.dice)
Counting the multiplicity of edges (count.multiple)
The graphopt layout algorithm was added, layout.graphopt
Generation of “famous” graphs (graph.famous).
Create graphs from LCF notation (graph.cf).
Dyad census and triad cencus functions (dyad.census,triad.census)
Cheking for simple graphs (is.simple)
Create full citation networks (graph.full.citation)
Create a histogram of path lengths (path.length.hist)
Forest fire model added (forest.fire.game)
DIMACS reader can handle different file types now
Biconnected components and articulation points(biconnected.components, articulation.points)
Kleinberg’s hub and authority scores (hub.score,authority.score)
as.undirected handles attributes now
Geometric random graph generator (grg.game) can return thecoordinates of the vertices
Function added to convert leading eigenvector community structureresult to a membership vector (community.le.to.membership)
Weighted fast greedy community detection
Weighted page rank calculation
Functions for estimating closeness, betweenness, edge betweennessby introducing a cutoff for path lengths (closeness.estimate,betweenness.estimate, edge.betweenness.estimate)
Weighted modularity calculation
Function for permuting vertices (permute.vertices)
Betweenness and closeness calculations are speeded up
read.graph can handle all possible line terminators now ( , ,
Error handling was rewritten for walktrap community detection,the calculation can be interrupted now
The maxflow/mincut functions allow to supply NULL pointer foredge capacities, implying unit capacities for all edges
Released January 1, 2008
New: - Cohesive block finding in the R interface, thanks to PeterMcMahan for contributing his code. See James Moody and Douglas R. White,2003, in Structural Cohesion and Embeddedness: A Hierarchical Conceptionof Social Groups American Sociological Review 68(1):1-25 - Biconnectedcomponents and articulation points. - R interface: better printing ofattributes. - R interface: graph attributes can be used via ‘$’.
Bug fixed: - Erdos-Renyi random graph generators rewritten.
Released October 3, 2007
This release should work seamlessly with the new R 2.6.0 version.Some other bugs were also fixed: - A bug was fixed in the Erdos-Renyigraph generator, which sometimes added an extra vertex.
Released August 13, 2007
The next one in the sequence of bugfix releases. Thanks to manypeople sending bug reports. Here are the changes: - Some memory leaksremoved when using attributes from R or Python. - GraphML parser:entities and character data in multiple chunks are now handledcorrectly. - A bug corrected in edge betweenness community structuredetection, it failed if called many times from the same program/session.- Edge betweeness community structure: handle unconnected graphsproperly. - Fixed bug related to fast greedy community detection inunconnected graphs. - Use a different kind of parser (Push) for readingGraphML files. This is almost invisible for users but fixed anondeterministic bug when reading in GraphML files. - R interface: plotnow handles properly if called with a vector as the edge.width argumentfor directed graphs. - R interface: bug (typo) corrected forwalktrap.community and weighted graphs.
Released June 7, 2007
This is another bugfix release, as there was a serious bug in the Rpackage of the previous version: it could not read and write graphs tofiles in any format under MS Windows.
Some other bits added: - circular Reingold-Tilford layout generatorfor trees - corrected a bug, Pajek files are written properly under MSWindows now. - arrow.size graphical edge parameter added in the Rinterface.
Released May 23, 2007
This is a minor release, it corrects a number of bugs, mostly in theR package.
Released May 21, 2007
The major new additions in this release is a bunch of communitydetection algorithms and support for the GML file format. Here is thecomplete list of changes:
as the internal representation changed, graphs stored with ‘save’with an older igraph version cannot be read back with the new versionreliably.
neighbors returns ordered lists
is.loop and is.multiple were added
topological sorting
VF2 isomorphism algorithm
support for reading graphs from the Graph Database forisomorphism
graph.mincut can calculate the actual minimum cut
girth calculation added, thanks to Keith Briggs
support for reading and writing GML files
Walktrap community detection algorithm added, thanks to MatthieuLatapy and Pascal Pons
edge betweenness based community detection algorithmadded
fast greedy algorithm for community detection by Clauset etal. added thanks to Aaron Clauset for sharing his code
leading eigenvector community detection algorithm by Mark Newmanadded
functions for creating dendrograms from the output of thecommunity detection algorithms added
community.membership supporting function added, creates amembership vector from a community structure merge tree
modularity calculation added
graphics parameter handling is completely rewritten, uniformhandling of colors and fonts, make sure you read?igraph.plotting
new plotting parameter for edges: arrow.mode
a bug corrected when playing a nonlinear barabasi.game
better looking plotting in 3d using rglplot: edges are 3dtoo
rglplot layout is allowed to be two dimensional now
rglplot suspends updates while drawing, this makes itfaster
loop edges are correctly plotted by all three plottingfunctions
better printing of attributes when printing graphs
summary of a graph prints attribute names
is.igraph rewritten to make it possible to inherit from the‘igraph’ class
somewhat better looking progress meter for functions whichsupport it
Released Dec 19, 2006
This is a new major release, it contains many new things:
Released Aug 23, 2006
This is a bug-fix release. Bugs fixed: - reciprocity corrected toavoid segfaults - some docs updates - various R package updates to makeit conform to the CRAN rules
Released Aug 18, 2006
Release time at last! There are many new things in igraph 0.2, themost important ones: - reading writing Pajek and GraphML formats withattributes (not all Pajek and GraphML files are supported, seedocumentation for details) - the RANDEDU fast motif search algorithm isimplemented - many new graph generators, both games and regular graphs -many new structural properties: transitivity, reciprocity, etc. - graphoperators: union, intersection, difference, structural holes, etc. -conversion between directed and undirected graphs - new layoutalgorithms for trees and large graphs, 3D layouts and many more.
New things specifically in the R package: - support for CTRL+C - newfunctions: Graph Laplacian, Burt’s constraint, etc. - vertex/edgesequences totally rewritten, smart indexing (see manual) - new R manualand tutorial: `Network Analysis with igraph’, still under developmentbut useful - very basic 3D plotting using OpenGL
Although this release was somewhat tested on Linux, MS Windows, MacOSX, Solaris 8 and FreeBSD, no heavy testing was done, so it mightcontain bugs, and we kindly ask you to send bug reports to make igraphbetter.
Released Jan 30, 2006
After about a year of development this is the first “official”release of the igraph library. This release should be considered as betasoftware, but it should be useful in general. Please send your questionsand comments.