forked from snap-stanford/snap
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Release.txt
463 lines (434 loc) · 23 KB
/
Release.txt
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
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 4.0, Jul 27, 2017
This is a major release and brings significant new functionality: local
higher-order clustering, counting of temporal motifs, node embedding with
node2vec, locality sensitive hashing, K nearest neighbor graph construction,
fast object loading using memory mapped files, and sparse attributes.
Here is a detailed list:
- implemented local higher-order clustering, see examples/localmotifcluster
- implemented counting of temporal motifs, see examples/temporalmotifs
- implemented node embedding with node2vec, see examples/node2vec
- implemented locality sensitive hashing, see examples/lshtest
- implemented K nearest neighbor graph construction, see
examples/knnjaccardsim
- implemented methods for computing biased random walks, required for node2vec
- implemented fast loading of objects using a memory mapped files via shared
memory for the following classes: TVec, TStrPool, TBigStrPool, THashKeyDat,
THash, TStrHash, TUNGraph, TNGraph, TMMNet, TNEANet, TNodeNet, TNodeEDatNet,
TNodeEdgeNet, TUndirNet, TDirNet, TTable, TTableContext
- implemented a shared-memory class TShMIn for input stream objects
- implemented sparse attributes (vector rather than hash based) in TMMNet and
TNEANet
- implemented a backward compatible load function TNEANet::Load_V2()
- implemented a method to convert a dense network to sparse
TNEANet::ConvertToSparse()
- implemented node2vec for TNEANet, TNGraph, and TNodeEDatNet
- defined a number of new vector and hash classes
- implemented base TNum class for integer based classes
- implemented a class for 64-bit integers TInt64
- expanded TVVVec to work with 64-bit integers
- expanded TVVec to work with 64-bit integers
- changed API for centrality calculations so that IsDir is the last parameter
- improved the code for betweenness centrality for directed graphs
- implemented AddNodeUnchecked() for TNodeNet, TNodeEDatNet, TNodeEdgeNet,
TNEANet, TUndirNet, TDirNet
- implemented SortNodeAdjV() for TUndirNet, TDirNet
- implemented TAttr::Load() to work with sparse attributes
- fixed a division by 0 in TTable::FillBucketsByWindow()
- fixed a bug in GenRewire() for directed graphs
- fixed a problem in GetGraphAnf(), dist=1 was redundant
- fixed a negative index error in casc.cpp
- fixed incorrect GCC_ATOMIC to better support ToNetwork() on Windows
- fixed a possible infinite loop in GetRndEdgeNonAdjNode()
- fixed node2vec crashing on directed graphs
- fixed and optimized TMMNet::ToNetworkMP
- added assertions for preventing writing to read only objects
- added a test for GenRwire()
- added tests for fast loading from shared memory
- added tests for jaccard similarity
- improved printing of 64-bit values
- renamed AddAtm() to AddMP()
- replaced GetMn() with explicit code to enable compilation in Snap.py
- removed profiling code from GetTriangleCnt()
- removed a redundant openmp flag from Makefile
- removed dependency of table.h on centr.h
- moved MapPageRank() and MapHits() from table.h to centr.h
- moved GetMapPageRank() and GetMapHitsIterator() from table.h to centr.cpp
- made edits for the code to compile with gcc on Mac OS X 10.9 and clang on
macOS 10.12
- updated code for compilation of Snap.py on Windows
- commented out obsolete GetMergeSortedV()
- commented out CountTriangles(), a previous implementation of
GetTriangleCnt()
- commented out dummy definitions of TNGraphMP, TNEANetMP
- fixed a few documentation typos in alg.h
- fixed a minor typo in agm comments
- edited ReadMe.txt to use only ASCII characters
Release 3.0, Jul 18, 2016
This is a mega large release. It brings major new functionality: relational
tables, multimodal graphs, multi-threaded operations, personalized pagerank,
motif-based network clustering, and hundreds of other additional features and
capabilities.
- implemented a new class TTable for relational tables
- implemented new supporting classes for TTable: TPredicate, TAtomicPredicate,
TPredicateNode, TTableContext, TPrimitive, TTableRow, GroupStmt,
TRowIterator, TRowIteratorWithRemove, TTableIterator
- implemented a wide range of standard relational operations on TTable
- implemented fast parallel select and join operations on TTable
- implemented IsNextK, SimJoin and SimJoinPerGroup methods
- implemented MapPageRank function to compute pagerank of a graph sequence
- implemented a new class TMMNet for multimodal networks
- implemented new subclasses of TMMNet: TModeNet for modes and TCrossNet
for cross nets
- added new methods and examples: randwalk, motifcluster, cascadegen
- randwalk computes random walk scores and personalized pagerank
between pairs of nodes
- motifcluster implements a spectral method for motif-based network clustering
- cascadegen computes cascades from a list of events
- created a new contrib directory for contributions to SNAP
- added a new contribution from University of Catania: RI algorithm for
one-to-one exact subgraph isomorphism problem maintaining topological
constraints
- implemented new methods for motif-based network clustering (motifcluster)
- implemented new methods for personalized pagerank (randwalk)
- implemented fast pagerank and hits, sequential and parallel
- implemented new methods for weighted pagerank, sequential and parallel
- implemented a new method for shortest paths
- implemented new methods for weighted farness centrality,
closeness centrality, and betweennesscentrality
- extended routines for calculating betweenness and closeness centrality
to both directed and undirected graphs, and TNEANet
- implemented fast methods for triangle counting, sequential and parallel, and
supporting methods
- implemented new methods that build cascades from a list of events (cascadegen)
- implemented a fast top-down BFS algorithm, TBreathFS::DoBfsHybrid()
- turned on OpenMP functionality on supported platforms: Linux and Mac with GCC
- introduced GCC_ATOMIC flag for __sync_... GCC functions
- unified all OpenMP flags to USE_OPENMP
- implemented many parallel operations
- implemented a new class TUndirNet for undirected networks
- implemented a new class TDirNet for directed networks
- implemented a new class TNGraphMP for directed graphs, supporting
multi-threaded operations
- implemented a new class TNEANetMP for directed multigraphs with
attributes, supporting multi-threaded operations
- implemented new class THashMP, hash table with multiprocessing support
- implemented a new experimental class in glib-adv, THashGenericMP,
a hash table which supports multithreading and non-integer value types
- implemented a new class TSsParserMP, a multithreaded parser for parallel
text load
- implemented a new class TAttr, a hash-based implementation of sparse
attributes
- implemented a new class TMaxPriorityQueue, max priority queue
- implemented a new class TStopwatch to benchmark operations
- implemented new methods for converting tables to graphs and networks,
sequential and parallel
- implemented new methods for loading tables into multimodal networks
- implemented new attribute type for TNEANet: integer vectors
- implemented sparse attributes for TNEANet nodes and edges
- implemented new methods in TNEANet to return integer attribute names, values
- implemented a new method in TNEANet for summing the weights of all the
outgoing edges of a node
- implemented new functions for converting numpy arrays to SNAP and vice versa
- added a method to sort the adjacency list of a node in a graph
- added methods to add nodes and edges without performing consistency checks
- implemented gettimeofday() on Windows
- implemented new methods to access individual components in TTriple
- implemented new methods to access individual components in TQuad
- implemented new TVec methods Reduce(), CopyUniqueFrom(), GetRndVal(),
AddMP(), MoveLastMP(), SearchBinLeft()
- implemented new THash method GetDatWithDefault()
- implemented new TStrPool method GetMemUsed()
- implemented new TCh method IsHashCh()
- implemented new TBigStrPool method GetMemUsed()
- implemented new TStrHash methods GetMemUsed(), GetStr()
- implemented new TStrHashF_DJB methods GetPrimHashCd(), GetSecHashCd()
- implemented new TGnuPlot methods PlotValRank(), PlotValOverTm(),
PlotCntOverTm()
- implemented new TSsParser methods GetUInt64(), IsUInt64() to support int64
- implemented a new TSecTm method GetYmdTmStr2()
- defined new TTriple type TIntStrStrTr
- defined new TVec type TIntStrStrTrV
- defined new THash types TIntStrPrVH, TIntIntStrPrH, TIntPrH,
TIntIntPrPrIntH, TIntIntPrPrFltH, TIntIntPrPr
- added new tests TTable, TUndirNet, TDirNet, TMMNet, TModeNet, TCrossNet,
TAttr, multimodal, priority-queue, randwalk
- added new tutorials for TAttr, TDirNet, TUndirNet, multimodal, TSsParser
- implemented Visual Studio 2010 project files for all the examples
- expanded the test for TTNEANet
- expanded the tutorials for TNGraph, TUNGraph, demo-gio
- improved the code for recognition of input file type in bigclam, cesna, coda
- implemented non-consecutive node numbering for bigclam input graphs
- changed the flows sample input from binary to text
- updated documentation for cesna
- extended testSnap.cpp with a betweenness calculation
- renamed min and max macros in glib-core/bd.h to MIN and MAX to avoid conflicts
- changed class TMIn to use uint64 size rather than int
- expanded TMin with methods for reading of memory mapped files on Linux
- added time support to gnuplot
- updated TVec::Resize() code to support 2B elements for TInt
- changed TVecPool::AddV() to use TSize rather than TSizeTy and uint
for length type
- changed the local path for gnuplot on Mac
- added range checking to TSsParser GetInt(), GetFloat(), GetUInt64()
- made minor updates for gnuplot output format
- made minor updates in json.h
- improved handling of TZipIn::SevenZipPath
- updated TZipIn TZipOut to properly handle paths
- commented out TDir::Exists() on Windows
- fixed the return type of IsDirected
- fixed a bug in TNodeEdgeNet::TNodeI::GetInNDat
- fixed TNEANet::DelEdge(), which crashed if any attributes were detected
- fixed a bug in GetEgonet, so in and out-edges to center node are included
- fixed the initialization of TBreathFS
- fixed a minor warning in Crash()
- fixed reading of empty lines in TSsParser::Next()
- fixed redundant space at the end of TSsParser::GetLnStr()
- fixed syntax errors in circles.h
- added a new experimental directory snap-exp/bfs-dev for BFS code
- added a new experimental directory snap-exp/cascades-dev for code that
creates cascades
- added a new experimental directory snap-exp/cascades-benchmark for code
that benchmarks cascade operations
- added a new experimental directory snap-exp/multimodal-dev for code
for multimodal networks
- implemented an experimental TUNGraphMP for undirected graphs, supporting
multi-threaded operations
- implemented an experimental class TMNet for multimodal networks with
three different subvariants TSVNode, TMVNode, TCVNode
- added a new experimental directory snap-exp/test-dev for various test programs
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<PGraph>::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 <stdio.h> 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<PGraph>::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 "<new>" 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