220 likes | 379 Views
The Java Universal Network/Graph Framework (JUNG): A Brief Tour. Danyel Fisher PhD Candidate Department of Informatics School of Information and Computer Science with Joshua O’Madadhain and Scott White. Network Stories. SUNBELT 2000 270 People & Structural Holes
E N D
The Java Universal Network/Graph Framework (JUNG):A Brief Tour Danyel Fisher PhD CandidateDepartment of Informatics School of Information and Computer Science with Joshua O’Madadhain and Scott White
Network Stories SUNBELT 2000 • 270 People & Structural Holes • Database to UCINET to Pajek to MAGE • “I still use UCINET IV from 1992” SOCNET LIST • “I need a new algorithm” • “How does this algorithm do it?” • Reworking it all for a Java applet
Programmatic Solution • Programmable Make it easy to do the same thing again • Library Can be a server, a client, or a small part of a larger application • Extensible If you need a new routine, you can put it in yourself • Open Source Take it apart and put it together some other way
JUNG General framework for graph modeling, analysis, and visualization • object-oriented framework for many graphs • easy visualization • rich attribute structure • complex filtering • dynamic graphs • Target audience is Java programmers with interest (but not expertise) in graphs
Overview • Creating a graph • Annotating with data • Filters • Graph drawing • Algorithms • Demonstration
Creating a graph • Load from a file • Pajek • GraphML (XML) • Build from scratch • Create vertices individuallygraph.add( new SparseVertex() ); • Specify edgesgraph.add( new DirectedEdge( v1, v2) ); • (Combine to create SQL or other format reader) • Use a graph generator • Small-world graphs • Power-law graphs
Adding user-defined data • key-value pairs associated withgraphs, edges, vertices • easy to write algorithms that operate on relational data String name = vertex.getUserDatum(NAME); edge.setUserDatum(DATE, new Date()); • Decorator infrastructure allows graph to be tagged with standard • weights • labels • indices
Using graph filters • Extract sub-graphs of vertices and edges • All edges with user-data “weight” > 0.2 • All nodes whose “location” is “California” • All nodes with degree > 1 • Chain filters together • All nodes with “weight” > 0.2 and location is “California” with degree > 1 • Automate complex graph transformations acceptVertex( Vertex v ) acceptEdge( Edge e )
Simple Graph Display Quick to display an existing graph. gd = new GraphDraw(g); jpanel.add(gd); Renderers draw vertices and edges. paintEdge( g, Edge, x1, y1, x2, y2 ) paintVertex( g,Vertex, x, y )
Visualizing graphs • Basic layout algorithms: • Fruchterman-Rheingold • Kamada-Kawaii • Eades • Self-Organizing Maps • Circle • Plug and play architecture • Drop in your favorite renderer, layout • Provided rendering engine is Swing-based • (but layouts are generic)
Algorithms clustering (k neighborhood) connectivity maximum flow network distances structural equivalence centrality betweenness markov network importance metrics page rank hubs and authorities
Graph types now • self-loops, parallel edges • bipartite and k-partite graphs • hypergraphs • mixed graphs (graphs with directed & undirected edges) coming soon • graph animation
Statistical Analysis • Graph measures: • Degree distributions • Average shortest paths • Clustering coefficients • can use existing Java statistical packages • CERN Colt Scientific Library • Visual Numeric’s JMSL for Java
Conclusion • Provides a common language for graphs • Complements rather than replaces other graph packages/network tools • A powerful framework for working with graphs with rich attribute structure • Ideally suited for building tools/applications related to network exploration and data mining
Adoption • 4000 downloads since August • 200 messages in the forums • Users are writing • social network analyses • games • animated graph views • trust metrics
Thanks http://jung.sourceforge.net Several demos online Active collaboration is welcome.