### Clustering

- HierarchicalClustering

  Description

- QuotientClustering

  Description

- StrengthClustering

  Description

### Export

- GMLExport

  Description

  Export plugin for GML format.

  This plugin records a Tulip graph structure using the GML File format. This format is the file format used by Graphlet. See www.infosun.fmi.uni-passau.de/Graphlet/GML/ for details.

### Glyph

- Billboard

  Description

  A 2D glyph.

  This glyph draws a textured square using the "viewTexture" node property value. If this property has no value, the square is then colored using the "viewColor" node property value. It is unsensitive to any axis rotation and so always remains displayed in the same position.

- ChristmasTree

  Description

  A 3D glyph.

  This glyph draws a christmas tree special for christmas release of 2008

- Circle

  Description

  A 2D glyph.

  This glyph draws a textured disc using the "viewTexture" node property value. If this property has no value, the disc is then colored using the "viewColor" node property value.

- Cone

  Description

  A 3D glyph.

  This glyph draws a textured cone using the "viewTexture" node property value. If this property has no value, the cone is then colored using the "viewColor" node property value.

- Cube

  Description

  A 3D glyph.

  This glyph draws a textured cube using the "viewTexture" node property value. If this property has no value, the cube is then colored using the "viewColor" node property value.

- CubeOutLinedTransparent

  Description

  A 3D glyph.

  This glyph draws a transparent cube using the "viewBorderColor" node property value to draw its edges.

- HalfCylinder

  Description

  A 3D glyph.

  This glyph draws an textured a half cylinder - a cylinder whose height is half the one draws by the Cylinder glyph - using the "viewTexture" node property value. If this property has no value, the half cylinder is then colored using the "viewColor" node property value.

- Hexagone

  Description

  A 2D glyph.

  This glyph draws a textured hexagone using the "viewTexture" node property value. If this property has no value, the hexagone is then colored using the "viewColor" node property value.

- Pentagone

  Description

  A 2D glyph.

  This glyph draws a textured pentagone using the "viewTexture" node property value. If this property has no value, the pentagone is then colored using the "viewColor" node property value.

- Ring

  Description

  A 2D glyph.

  This glyph draws a textured disc with a circular hole using the "viewTexture" node property value. If this property has no value, the ring is then colored using the "viewColor" node property value.

- Sphere

  Description

  A 3D glyph.

  This glyph draws a textured sphere using the "viewTexture" node property value. If this property has no value, the sphere is then colored using the "viewColor" node property value.

- Square

  Description

  A 2D glyph.

  This glyph draws a textured square using the "viewTexture" node property value. If this property has no value, the square is then colored using the "viewColor" node property value.

### Import

- AdjacencyMatrixImport

  Description

  This plugin enables to import a graph coded with a matrix

  File format:

  The input format of this plugin is an ascii file where each line represents a row of the matrix. In each row, cells must be separated by a space.

  Let M(i,j) be a cell of the matrix :

  - if i==j we define the value of a node.

  - if i!=j we define a directed edge between node[i] and node[j]

  If M(i,j) is real value (0, .0, -1, -1.0), it is stored in the viewMetric property of the graph.
  If M(i,j) is a string, it is stored in the viewLabel property of the graph.
  Use & to set the viewMetric and viewLabel properties of a node or edge in the same time. If M(i,j) == @ an edge will be created without value
  If M(i,j) == # no edge will be created between node[i] and node[j]

  EXEMPLE 1 :
  A
  # B
  # # C
  Define a graph with 3 nodes (with labels A B C) and without edge.

  EXEMPLE 2 :
  A
  @ B
  @ @ C
  Define a simple complete graph with 3 nodes (with labels A B C) and no label (or value) on its edges

  EXEMPLE 3 :
  A # E & 5
  @ B
  # @ C
  Define a graph with 3 nodes and 3 edges, the edge between A and C is named E and has the value 5

- DotImport

  Description

  This plugin enables to import a graph coded with in dot format

  File format: [ http://www.research.att.com/sw/tools/graphviz/ ]

  First (quick) support of the AT&T DOT language

  - main graph entities are extracted (node/edges)

  - subgraphs are not already supported

  - several attributes (node & edge) are supported

  - based on a modified grammar file available with the graphviz software

  - this parser can be largely optimized ...

- FileSystem

  Description

  Import a tree representation of a file system directory.

  This plugin enables to capture in a tree the full hierarchy of of a given file system directory

- GMLImport

  Description

  Import plugin for GML format.

  This plugin imports a graph structure recorded using the GML File format. This format is the file format used by Graphlet. See www.infosun.fmi.uni-passau.de/Graphlet/GML/ for details.

- Grid

### Layout

- BubbleTree

  Description

  This plug-in implement the bubble tree drawing algorithm first published as:

  Bubble Tree Drawing Algorithm :
  D. Auber and S. Grivet and J-P Domenger and Guy Melancon,
  In International Conference on Computer Vision and Graphics, pages 633-641, september 2004.

  HISTORY

  - 07/12/04 Version 0.0.3: Use new Tulip plugin parameter mechanism

  - 16/07/03 Version 0.0.2: Better management of node size

  - 16/05/03 Version 0.0.1: Initial release

  NOTES

    This algorithm only works on trees. Let n be the number of nodes, the algorithm complexity is in O(n) or O(nlog(n)), By default O(nlog(n)) algorithm is used, but one can choose the complexity by using the argument (bool)"complexity" (true means O(nlog(n), false O(n)). The algorithm can manage nodes of different size. The SizeProperty "viewSize" is used by default if no parameters are given to the plug-in. The parameter is (SizeProperty*) "node size".

  AUTHORS

    David Auber, S. Grivet University Bordeaux I France: auber@tulip-software.org , grivet@labri.fr

- Circular

  Description

  This plugin is an implementation of a circular layout that takes node size into account. It manages size of nodes and use a standard dfs for ordering nodes or search the maximum length cycle.

  HISTORY:

  25/11/2004 version 0.0.2: size and order 01/12/1999 Version 0.0.1: Initial release

  NOTES:

  This work on general graphs. Let n be the number of nodes, the algorithm complexity is in O(n). If the search_cycle is enabled, the complexity is exponential (NP-Complete problem !).

  AUTHORS:

  David Auber and Romain Bourqui University Bordeaux I France: Email: auber@tulip-software.org Daniel Archambault The University of British Columbia: Email: archam@cs.ubc.ca

- ConeTreeExtended

  Description

  ConeTreeExtended.h - An implementation of the cone tree layout.

  This plugin is an extension of the Cone tree layout algorithm first published as:

  A. FJ. Carriere and R. Kazman,
  "Interacting with Huge Hierarchies: Beyond Cone Trees",
  In Proceedings of InfoViz'95,
  IEEE Symposium on Information Visualization
  pages 74-78, 1995,

  Information about the extension can be found in :

  D.Auber, PhD Thesis, "Outils de visualisation de larges structures de donnees", University Bordeaux, december 2002.

  HISTORY

  - 01/04/99 Verson 0.0.1: Initial release

  NOTES

    This algorithm only works on trees. Let n be the number of nodes, the algorithm complexity is in O(n).

  AUTHORS

    David Auber University Bordeaux I France: Email: auber@tulip-software.org

- Dendrogram

  Description

  This plugin is an implementation of a dendrogram, an extended implementation of a "Bio representation" which includes variable orientation and variable node sizelayout.

  NOTES

    This works on tree. Let n be the number of nodes, the algorithm complexity is in O(n).

  AUTHORS

    Julien Testut, Antony Durand, Pascal Ollier, Yashvin Nababsing,
    Sebastien Leclerc, Thibault Ruchon, Eric Dauchier
    University Bordeaux I France

- GEMLayout

  Description

  An implementation of a spring-embedder layout.

  This plugin is an implementation of the GEM-2d layout algorithm first published as:

  A. Frick, A. Ludwig, and H. Mehldau,
  "A fast, adaptive layout algorithm for undirected graphs",
  In R. Tamassia and I. Tollis (Eds),
  Graph Drawing'94,
  Volume 894 of Lecture Notes in Computer Science, Springer Verlag, 1995.

  HISTORY

  The implementation started life as the public-domain code produced by Arne Frick and released at

  www.frick-consulting.de/publications.html

  The core "embedder" part of the algorithm was used in the implementation of a Java plugin for the CWI "Royere" tool, and then this code was ported to C++ to make the implementation given here.

  NOTES

    The embedder algorithm described by Frick involves three phases: insertion, arrangement, and optimization. Only the first two of these phases are included here. Experiments with the Java implementation showed that the optimization phase consumed significantly more time than the first two and produced apparently marginal improvements in the final layout.
    As GEM, like other spring-embedder algorithms, is computationally expensive, I have tried to optimize the loops somewhat by storing all necessary node information into two arrays: "GemProp" carries the (scalar) values associated with each node by the layout algorithm, while "Adjacent" is an array of vectors, one vector per node, giving the index (integer) of each node.

    The new version has been reimplemented to manage edge length it merges the 3D stuff and removes the use of integers (new CPU do not require it anymore).

  AUTHORS

    David Duke, University of Bath, UK: Email: D.Duke@bath.ac.uk

    David Auber,University of Bordeaux, FR: Email: david.auber@labri.fr Version 0.1: 23 July 2001. Version 0.2: September 2006

- HierarchicalGraph

  Description

  Hierarchical.h - An implementation of hierarchical graph drawing algorithm.

  This plugin is an implementation of hierarchical layout algorithm first published as:

  D. Auber,
  "Tulip - A Huge Graph Visualization Framework",
  "Book. Graph Drawing Software. (Ed. Michael Junger & Petra Mutzel",
  "2004",
  pages 105 - 126.

- ImprovedWalker

  Description

  This plugin is an implementation of a linear Walker's algorithm:

  Christoph Buchheim and Michael Junger and Sebastian Leipert, Improving Walker's Algorithm to Run in Linear Time citeseer.ist.psu.edu/buchheim02improving.html

  NOTES

    This algorith works on tree. Let n be the number of nodes, the algorithm complexity is in O(n).

  AUTHORS

    Julien Testut, Antony Durand, Pascal Ollier, Yashvin Nababsing,
    Sebastien Leclerc, Thibault Ruchon, Eric Dauchier
    University Bordeaux I France

- MixedModel

  Description

  This plugin is an implementation of the planar polyline graph drawing algorithm, the mixed model algorithm, first published as:

  C. Gutwenger and P. Mutzel,
  "Planar Polyline Drawings with Good Angular Resolution",
  "Lecture Notes In Computer Science, Vol. 1547"
  "Proceedings of the 6th International Symposium on Graph Drawing,"
  pages "167--182"
  1998

  Let n be the number of nodes, the original algorithm complexity is in O(n).
  But the implementation of the canonical ordering has not been made in O(n).
  This version of the algorithm considers each connected component of the graph, tests if it is planar or not. If not, it computes a planar subgraphs, which is a maximal planar "sub-map". Then an area aware version of Gutwenger and Mutzel 's algorithm is used, and if the connected component was not planar, it adds the "unplanar" edges in 3D. Finally, it uses the Connected Component Packing plugin of Tulip Software to pack the connected components.

- SquarifiedTreeMap

  Description

  SquarifiedTreeMap.h - An implementation of a squarified treemap layout.

  This plugin is an implementation of TreeMap and Squarified treemap layout.

  Squarified Treemaps :
  Bruls, M., Huizing, K., & van Wijk, J. J.
  In Proc. of Joint Eurographics and IEEE TCVG Symp. on Visualization
  (TCVG 2000) IEEE Press, pp. 33-42.

  Shneiderman, B. (March 1991) Tree visualization with treemaps: a 2-d space-filling approach ACM Transactions on Graphics, vol. 11, 1 (Jan. 1992) 92-99. HCIL-91-03, CS-TR-2645, CAR-TR-548

  NOTES

    This algorith only works on tree.

  VERSION

    1.0.0 complete rewrite, merge treemap and squarified in the same algorithm simplify implementation. The algorithm can be tune to go 2 or 3 time faster however, since the algorithm is fast enough, the code is written to be easily read and maintain.

  AUTHORS

    Auber David

  VERSION

    0.0.0

  AUTHORS

    Julien Testut, Antony Durand, Pascal Ollier, Yashvin Nababsing,
    Sebastien Leclerc, Thibault Ruchon, Eric Dauchier
    University Bordeaux I France

- TreeLeaf

  Description

- TreeRadial

  Description

  TreeRadial.cpp - An implementation of a radial drawing of trees.

  This algorithm is inspired from MoireGraphs: Radial Focus+Context Visualization and Interaction for Graphs with Visual Nodes from T. J. Jankun-Kelly, Kwan-Liu Ma published in IEEE Symposium on Information Visualization (2003)

- TreeReingoldAndTilfordExtended

  Description

  This plugin is an implementation of the hierarchical tree layout algorithm first published as:

  E.M. Reingold and J.S. Tilford,
  "Tidier Drawings of Trees",
  "IEEE Transactions on Software Engineering"
  pages "223--228"
  1981

  NOTES

    This algorithm only works on trees; so if the graph is not a tree it will be applied on a spanning tree.
    Let n be the number of nodes, the algorithm complexity is in O(n).
    It extends the original Reingold and Tilford by providing managment of different node size and different edge length.
    The algorithm use the (Size)"viewSize" property for element size and the (int)"treeEdgeLength" for the edge length.

- Tutte

  Description

  This plugin is an implementation of the Tutte layout for 3-Connected graph algorithm first published as:

  W.T. Tutte, "How to Draw a Graph", "Proc. London Math. Soc.", "1963", pages 743-768.

### Metric

- ArityMetric

  Description

  This plugin compute the degree of each node

  NOTES

    This plug-in exists to obtain a uniform interface in the Tulip graph visualization software. To access to the degree of a node it is recommended to use directly the degree function available in each graph.

- BetweennessCentrality

  Description

  This plugin is an implementation of betweeness centrality parameter. algorithm published by:

  U. Brandes,

- BiconnectedComponent

  Description

  This plugin is an implementation of a biconnected component decompostion algorithm. It assigns to the same value to all the edges in the same component.

  NOTES

    This algorithm assigns to each node a value defined as following : If two nodes are in the same connected component they have the same value else they have a different value.

- ClusterMetric

  Description

  This plugin is an implementation of the Algorithm Parameter. algorithm published in :

  Y. Chiricota. F.Jourdan, an G.Melancon
  "Software component capture using graph clustering",
  "IWPC",
  2002.

  Extended to unbounded depth (for the neigbors) :

  NOTES

    This algorithm works on general graphs. The algorithm use the parameter depth in order to determine the depth of the neighbors. If no depth is given, the plugins automatically popup a qt windows to ask the user for this parameter.

- ConnectedComponent

  Description

  This plugin is an implementation of the connected component decompostion algorithm. each node and edge that belongs to the same component receive the same value.

  NOTES

    This algorithm assigns to each node a value defined as following : If two nodes are in the same connected component they have the same value else they have a different value.

- DagLevelMetric

  Description

  This plugin is an implementation of a DAG layer decomposition

  NOTES

    This algorithm works on general DAG, the complexity is in O(|E|+|V|);

- DepthMetric

  Description

  This plugins compute for each node n, the maximum path-length between n and the other node. The graph must be acyclic.

  NOTES

    This algorithm works on general graphs.

- EccentricityMetric

  Description

  This plugin compute the eccentricity of each node,

  Eccentricity is the maximum distance to go from a node to all others. In this version the value is normalized (1 means that a node is in the center of the network, 0 means that a node is the more eccentric in the network).

  More information about the use of eccentricity metric can be found in :

  Visone: Analysis and visualization of social networks.
  "Book. Graph Drawing Software. (Ed. Michael Junger & Petra Mutzel",
  Authors : Ulrik Brandes and Dorothea Wagner.
  "2004",
  pages 321-340.

  NOTES

    The complexity of the algorithm is O(|V| * |E|) time and O(1) space.

- IdMetric

  Description

  This plugins assigns id to nodes and edges. The ids are those used by tulip.

- LeafMetric

  Description

  This plugin computes the number of leaves in the subtree induced by each node.

  NOTES

    This algorithm assigns to each node a value defined as following : If two nodes are in the same connected component they have the same value else they have a different value.

- NodeMetric

  Description

  This plugin computes the number of nodes in the subtree induced by each node.

  NOTES

    This algorithm assigns to each node a value defined as following : If two nodes are in the same connected component they have the same value else they have a different value.

- RandomMetric

  Description

  This plugins assigns random values to nodes and edges. the values are between 0 and 1.

- StrahlerMetric

  Description

  This plugin is an implementation of the Strahler Parameter. algorithm first published as:

  A.N. Strahler ,
  "Hypsomic analysis of erosional topography",
  "Bulletin Geological Society of America 63,pages 1117-1142.",
  1952.

  Extended to graphs in :

  D. Auber,
  "Using Strahler numbers for real time visual exploration of huge graphs,
  ICCVG, International Conference on Computer Vision and Graphics,
  pages 56-69,
  2002, September.

  NOTES

    This algorithm works on general graphs, if no node is selected, the algorithm automatically choose the nodes with higher outdegree as starting nodes.

  The algorithm use the (bool)"viewSelection" property to determine the starting nodes.
- StrengthMetric

  Description

  This plugin is an implementation of the Strength Parameter. algorithm first published in :

  Y. Chiricota. F.Jourdan, and G.Melancon
  "Software component capture using graph clustering",
  "IWPC",
  2002.

### Selection

- InducedSubGraphSelection

  Description

  This selection plugins enables to find a subgraph induced by a set of nodes.

  Let V' a subset of nodes, G' is an induced subgraph of G if all edges (and only these ones) element of G that link two nodes (only one in case of loop) of V' are in G'.

  AUTHORS

    David Auber, LaBRI University Bordeaux I France: auber@tulip-software.org

- Kruskal

  Description

  This selection plugins implements the so called Kruskal algorithm. This algorithm enables to find a minimum spanning tree in a connected graph.

  This selection plugins enables to find all nodes and edges at a fixed distance of a set of nodes.

  This only works on undirected graphs, (ie. the orientation of edges is omitted).

  It takes one parameter :

  - edge weight, this parameter defines the weight of each edge in the graph.

  AUTHORS

    Anthony Don, LaBRI University Bordeaux I France:

- LoopSelection

  Description

  This selection plugins enables to find loops in a graph A loop is an edge that has the same source and target.

  AUTHORS

    David Auber, LaBRI University Bordeaux I France: auber@tulip-software.org

- MultipleEdgeSelection

  Description

  This selection plugins enables to find the multiple-edges and parallel-edges in a graph. Let e1, e2 two edges, e1 and e2 are parallel edges if source(e1)=source(e2) and target(e1) = target(e2). If it exists n edges between two nodes, only n-1 edges will be selected.

  AUTHORS

    David Auber, LaBRI University Bordeaux I France: auber@tulip-software.org

- ReachableSubGraphSelection

  Description

  This selection plugin enables to find all nodes and edges at a fixed distance of a set of nodes. It takes three parameters :

  - distance

  - direction : 0 means directed, 1 reverse directed, 2 undirected

  - startingnodes : the selected nodes of this BooleanProperty (those whose associated value is true) will be used as starting nodes.

  AUTHORS

    David Auber, LaBRI University Bordeaux I France: auber@tulip-software.org

- SpanningDagSelection

  Description

  This selection plugins enables to find a subgraph of G that is acyclic.

  AUTHORS

    David Auber, LaBRI University Bordeaux I France: auber@tulip-software.org

- SpanningTreeSelection

  Description

  This selection plugins enables to find a subgraph of G that is a forest (a set of trees).

  AUTHORS

    David Auber, LaBRI University Bordeaux I France: auber@tulip-software.org

### Size

- AutoSize

  Description

  AutoSize.cpp - Compute size in order to prevent node-node overlapping.

  This plug-ins compute size of nodes and edges such that, node-node overlapping do not exists (if it is possible). and sizes of edges are proportional to size of nodes.

  AUTHORS

    David Auber University Bordeaux I France: Email: auber@tulip-software.org

- FitToLabel

  Description

  FitToLabel.cpp - Compute size of elements according to the size of the displayed label.

  version 1.0.0 : Tulip Team, Complete rewrite initial version : Sebastien Carceles, Pascal Niotout, Sophie Bardet, Julien Mercadal, Bertrand Ng Sing Kwong

  AUTHORS

    Maintainer : David Auber University Bordeaux I France: Email: auber@tulip-software.org

- MetricSizeMapping

  Description

  Metric Mapping - Compute size of elements according to a metric.

  This plugin enables to set the size of the graph's elements according to a metric.

  AUTHORS

    David Auber University Bordeaux I France: Email: auber@tulip-software.org