Stanford Network Analysis Platform (SNAP) is a general purpose, high performance system for graph and network manipulation and analysis This file contains a high-level description of changes in SNAP releases. Release 2.4, May 11, 2015 - implemented TLSHash() class for locality sensitive hashing - implemented SaveEdgeListNet(), LoadEdgeListNet() - expanded Load/SaveEdgeListNet() with support for node attributes - implemented IsAttrDeletedN(), IsIntAttrDeletedN(), IsFltAttrDeletedN() - implemented IsStrAttrDeletedN(), IsAttrDeletedE(), IsIntAttrDeletedE() - implemented IsFltAttrDeletedE(), IsStrAttrDeletedE() - implemented GetIntAttrIndDatE(), GetFtlAttrIndDatE(), GetStrAttrIndDatE() - implemented GetIntAttrIndDatN(), GetStrAttrIndDatN(), GetFltAttrIndDatN() - implemented GetAttrIndN(), GetAttrIndE() - implemented IsEmpty() and IsEnd methods() for THashSetKeyI - implemented Next() method to THashSetKeyI - added Load() method to TCh - added functions to compare triples by 2nd and 3rd value - added functions for checking whether a directory exists - added *= operator to TUInt64 to support the type in vector indexes - added contrib directory and its readme - made sentinel line optional for LoadEdgeListNet() - fixed NodeId to NodeI for iterators - fixed an incorrect method reference in AttrValueEI() - fixed a problem in subgraph.cpp:GetEgonet() with bidirectional connections - updated GLib code with upstream code - added a comment on PNG support for GNUPlot on Mac - added comments for methods in gio.cpp - added an example on how to update values in a hash table - put back tutorials Xcode project files Release 2.3, Jun 16, 2014 - implemented RolX algorithm for detecting node roles - implemented flow agorithms - added an example for the RolX algorithm - added an example for the flow algorithms - implemented a new function GetEgonet() - added tests and demo code for functions in alg.h - changed gnuplot version test, so that it runs only on demand, not at start - expanded cncom tests and the demo - expanded the code to work on non-OpenMP Mac OS X - renamed GetIntAttrDatN to GetIntAttrIndDatN so that it works in Snap.py - renamed GetIntAttrDatE to GetIntAttrIndDatE so that it works in Snap.py - updated the AGM related code to work with SWIG - added an error description when file open fails - fix a bug in loading attributes when the node ids are non-integers - fixed kronfit to use the right output file name given by arg "-o:" - fixed TUNGraph::AddNode() to add reciprocal edges when given vector - fixed a bug with GetMxSccSz - fixed GenCircle and GenGrid to add reciprocal edges properly - improved the fix for sorting the SCC sizes - improved the handling of getrusage() Release 2.2, Mar 12, 2014 - added CoDA, 2-mode community detection method, in examples/coda - added CESNA, community detection method for networks with node attributes, in examples/cesna - added Infomap community detection algorithm in examples/community - added a second demo of connected components in tutorials/demo-cncom1.cpp - added a demo of text file parsing in tutorials/demo-TSsParser.cpp - added a function to plot multiple TMom hash tables on a single plot - extended TMom to compute the mode value of the data - added a PlotValV() function that plots error bars/variances - added SetVal() to TVec - added support for generating PNG on Mac OS X - improved Resize() to allocate maximum number of elements possible - improved error handling of TZipIn for non-zip files - appended 'X' to the names of copy out scalar parameters in snap-core - added GetVal(), GetPrimHashCd() and GetSecHashCd() to TCnCom - replaced aborts with exceptions for Snap.py - updated Makefiles and code to compile on OS X Maverics - added g++ flags in Makefile - added compilation switches Snap.py, Snapworld, and backtraces in Makefile - added checks in accessing attributes in TNEANet - changed FailR to EFailR in TZipIn - fixed bug in TMom standard error computation - fixed an incorrect assertion in TBreathFS::GetRndPath() - fixed infinite loop in TNEANet::DelEdge() - fixed a problem in TNEANet::DelEdge() - fixed a problem in TNEANet::DelNode() - fixed TNEANet::Add{Int,Str,Flt}AttrDat[NE]() to use KeyId instead of NId - fixed a problem with a missing variable initialization in mag.cpp - fixed #26, change in endianness detection due to gcc compiler bug - fixed a bug in CntUniqBiDirEdges() - fixed small bugs in Cnt... functions in alg.h - fixed TMom plots - fixed incorrect index in glib-core/tm.h:GetMonthNm() - fixed incorrect index in TTm::GetCurLocTm().GetMonth() - made minor code changes to reduce compiler warnings Release 2.1, Sep 12, 2013 - implemented a new network class TNEANet and PNEANet for graphs with attributes - added new GetVal1() and GetVal2() methods to access components of TPair - renamed Get*Values() to Get*Val() - added a new function to create a rewired version (using configuation model) of a given graph - added sorting to TGStatVec::GetValV - extended function TSnap::PrintInfo() in gbase.h - added statistics for undirected graphs. - added Strong and Bi-connected component statistics - added functions to plot k-Core decomposition plots - updated graph statistics - implemented TTable::Defrag - changed some casts in unicode.h to fix compilation errors on gcc 4.8.1 - defined NDEBUG compilation flag to disable assertions in production - improved saving of PNG and EPS files to take into account the full path - added static variables in TGnuPlot: GnuPlotPath and GnuPlotFNm for gnuplot executable - added a final renormalization step to GetHits() needed for disconnected graphs - added GraphVizLayout sfdp - added benchmark for THash and TVec - improved PlotHops - fixed a bug in TSsParser::GetLineStr() - fixed a small bug in GetKCoreEdges() - updated cncom.h:IsWeaklyConn() so that it does not crash for empty graphs - fixed #38 community example does not work on email-Enron.txt - fixed zygote example on Mac OS X - made changes needed for snap.py on Windows - changed gbase.h so that it compiles with swig - moved WriteN() to util.cpp to prevent compile warnings on Mac OS X - made Snapworld functions defined only on Unix-like systems - make bigclam.cpp faster - added fixed vector size to the hash, vec benchmarks - made minor code changes to reduce compiler warnings - fixed demo-topology-benchmark.cpp compilation on Cygwin - commented out class IsDerivedFrom Release 2.0, May 13, 2013 - significantly changed several classes and methods, not backward compatible. This version is not able to read binary files or class serializations, produced by previous SNAP versions. - added support for 64-bit vector length in TVec - added support for 64-bit vector length in TVecPool - implemented a new hash function for TVec with 10x improvement over the previous one. This change is not backward compatible for hash tables. Old hash functions are available in TVecHashF_OldGLib. - implemented new 10x faster hash functions for TPair, TTriple, TQuad and TTuple - added 64-bit random number generators GetUniDevInt64() and GetUniDevUInt64() - implemented new TVec method UnionLen() and GetMemSize() - moved vector access functions in TLocClust from private to public - added new examples agmfit, bigclam, circles, zygote, XcodeTest - added new tutorials for bfsdfs, cncom, gviz, triad - added new unit tests for alg, bfsdfs, cncom, gvi, THashSet, triad - added Mac OS X Xcode support for examples - added Mac OS X support for doxygen - fixed #36 normalized eigenvector centrality values to use L2 rather than L1 - fixed #17 integer overflow bug in TSnap::GenRndGnm() - fixed a bug in THashSet::Defrag() - fixed a bug in IsTree() - fixed a bug in TVec::NextPerm() - fixed GetNodeTriads(), it was not checking for an empty group - changed GetTriads and GetClustCf to return triads as int64 rather than int to prevent integer overflow for large graphs - implemented much faster TSsParser - added OpenMP compilation flags - implemented stackdump for g++ - merged updates from the most recent version of GLib - undefined __STDC_LIMIT_MACROS in base.h to prevent double definition warnings - removed include in examples/*/stdefx.h to correctly define SIZE_MAX - removed a redundant GetNodeTriads() variant - changed type of PGraph::TNodeI to PGraph::TObj::TNodeI in triad.h - fixed warnings about implicit conversions from int64 to int in dt.h, tm.h, os.h. Release 1.11, Dec 21, 2012 - added new examples netinf, infopath - added new advanced modules cascnetinf, cascdynetinf - added new distribution functions to glib-core/dt.h::TRnd: GetRayleigh(), GetWeibull() - added demo programs for graph input/output (gio.h), graph generators (ggen.h), THash - added tests for graph input/output (gio.h), graph generators (ggen.h), THash - unified the names of intermediate files for demos and tests to demo*.dat and test*.dat - added cases to test edge iterator with very few nodes - expanded TUNGraph test to include graphs with loops and the number of edges in such graphs - added ManipulateEdges test for TUNGraph - added test in TUNGraph for checking edge iterator following deletion - added OSX Xcode project - updated snap-test Xcode project with gtest code completion/syntax. - improved tutorial and test Makefiles to work on Mac OS X - improved Snap.o make rule, added dependencies for *.h, *.cpp in glib-core and snap-core - improved demo Makefile so that individual targets do not need to be specified - added path to snap-exp to examples makefiles - changed function parameters in TStrPool to const reference - added assertion for DegSeq vector to be sorted - added an assertion for edges in random graphs to prevent infinite loops - fixed #27 - No node checking when load Epinions in signnet.cpp - fixed #28 - no TGraphViz class in signnet.cpp - fixed #29 - no check for inserting node in bfsdfs.h - fixed #17 "example/cliques" does not compile with gcc 4.7 - fixed #21, undetected 32-bit overflow in TGraphAnf::InitAnfBits(), the calculation is now done in 64-bits and an exception is thrown if the final result is more than 32-bit - fixed bug in LoadPajek for graph files with colors - changed EFailR() to FailR() when out of memory - included bd.h in all files that use Class... macros, so that doxygen correctly documents those classes - added #7, add Snap version number to reference manuals - implemented #8, improve the front page for reference manuals - added .gitignore file for Xcode project Release 1.10, Oct 15, 2012 - fixed TUNGraph to return correct number of edges, not backward compatible. This version is not able to read binary TUNGraphs, saved by previous SNAP versions. - added a new example graphhash - fixed #13, GHash incorrectly handles non-existent keys - fixed #12, Graphviz keeps outputting a PostScript file on non-Windows - fixed #15, bug in netevol.cpp - fixed #14, TSnap::GenCircle creates self-loops - fixed a bug in TSnap::GetBfsTree which failed for revised AddNode() - included "" in unicode.h to support Xcode with the Apple compiler - fixed bug in TUNGraph:BegEI(), some edges could be missed by the iterator Release 1.9.2, Oct 2, 2012 - removed a default parameter in triad.h so that the code compiles in Visual Studio 2010 - in source code converted all 8bit characters to 7bit characters \xnn Release 1.9.1, Sep 28, 2012 - fixed name mismatch between GetUniq... and CntUniq... to CntUniq... - reversed the changes in centr.h:GetNodeEcc() name and definition to pre-1.9 Release 1.9, Sep 26, 2012 - names of functions in gviz.h have been changed, not backward compatible - neighbor abbreviations have been changed thoughout the code, nbh -> nbr, Nbh -> Nbr, not backward compatible - a new class TBPGraph has been added to support bipartite graphs - new examples have been added agmgen, circles, kronem, magfit, maggen - code automatically detects gnuplot version to address "set ticks" - makefiles automatically detect OS version - snap directory has been split to snap-core, snap-adv, snap-exp - glib directory has been split to glib-core and glib-adv - reference manuals have been created for users and developers - tutorials have been created for many classes - tests have been created for many classes - programming guide has been created for developers - code has been changed to remove compilation warnings - merged with the latest glib version - numerous code improvements and bug fixes