com.hp.hpl.guess
Class Graph

java.lang.Object
  extended byedu.uci.ics.jung.utils.UserDataDelegate
      extended byedu.uci.ics.jung.graph.impl.AbstractArchetypeGraph
          extended byedu.uci.ics.jung.graph.impl.AbstractSparseGraph
              extended byedu.uci.ics.jung.graph.impl.SparseGraph
                  extended bycom.hp.hpl.guess.Graph
All Implemented Interfaces:
ArchetypeGraph, Cloneable, Graph, NumberEdgeValue, UserDataContainer
Direct Known Subclasses:
StateGraph

public class Graph
extends SparseGraph
implements NumberEdgeValue


Nested Class Summary
 
Nested classes inherited from class edu.uci.ics.jung.utils.UserDataContainer
UserDataContainer.CopyAction
 
Field Summary
 
Fields inherited from interface edu.uci.ics.jung.graph.Graph
DIRECTED_EDGE, NOT_PARALLEL_EDGE, SIMPLE_EDGE, UNDIRECTED_EDGE
 
Fields inherited from interface edu.uci.ics.jung.graph.ArchetypeGraph
SUBSET_MANAGER
 
Constructor Summary
Graph(FrameListener display, InterpreterAbstraction interp)
          create a new graph.
Graph(FrameListener display, InterpreterAbstraction interp, boolean multiedge)
          create a new graph.
 
Method Summary
 void add(PySequence seq)
          add nodes and edges from the graph
 DirectedEdge addDirectedEdge(Node source, Node dest)
          user's API for adding a new directed edge to the graph and database
 DirectedEdge addDirectedEdgeWID(Node source, Node dest, int id)
          user's API for adding a new directed edge to the graph and database
 Edge addEdge(Edge e)
          used to load edges from the database into the graph
 UndirectedEdge addEdge(Node node1, Node node2)
          user's API shortcut for adding a new undirected edge.
 Field addEdgeField(String fieldName, int sqlType, Object defaultValue)
           
 Edge addEdgeNoCheck(Edge e)
          use this if you know the storage object already contains the edge.
 Node addNode(Node n)
          used to load nodes from the database into the graph
 Node addNode(String name)
          user's API for adding a new node to the graph and database
 Field addNodeField(String fieldName, int sqlType, Object defaultValue)
           
 UndirectedEdge addUndirectedEdge(Node node1, Node node2)
           
 UndirectedEdge addUndirectedEdgeWID(Node node1, Node node2, int id)
           
 Set biComponentClusters()
          do Bi-Component Clustering
 void binPackLayout()
          packs all nodes
 void binPackLayout(boolean rescale)
          packs all nodes
 void centerAfterLayout(boolean state)
          should we center after doing a layout disable this to control it yourself
 void circleLayout()
          places all nodes in a circle
 void circleLayout(Field f, Node c)
          places all nodes in a circle with node c in the middle and its neighbors around that center with a radius proportional to field f (all nodes that are not neighbors of c will be left as is)
 void circleLayout(Field f, Node c, double xorigin, double yorigin)
          places all nodes in a circle with node c in the middle and its neighbors around that center with a radius proportional to field f (all nodes that are not neighbors of c will be left as is)
static Set clusters(Graph graph, GraphClusterer clusterer)
          meta clustering algorithm, takes a clustering algorithm and a graph and returns a set of sets
 void colorize(Field f)
           
 void colorize(Field f, Color start, Color end)
           
 void colorize(Field f, Color start, Color middle, Color end)
           
 void colorize(Field f, String start, String end)
           
 void colorize(Field f, String start, String middle, String end)
           
 Set complement(GraphElement t)
          returns all nodes/edges in the graph that are NOT the argument node/edge
 Set complement(PySequence seq)
          returns the complement (e.g.
 void computeAbstractRanker(AbstractRanker centrality, String guessKey, ArchetypeGraph ag)
          computes the ranking for nodes or edges and deposits the results based on guessKey
 void computeBetweennessCentrality()
           
 void computeDegreeDistributionRank()
           
 void computeDegrees()
           
 void computeHITS()
           
 void computePageRank()
           
 void computeRandomWalkBetweenness()
           
 void dagLayout()
          DAG
 double density()
           
 Set edgeBetweennessClusters(int numEdgesToRemove)
          do Edge betweenness clustering
 Set exactFlowCommunity(int cohesion)
          doesn't do anything right now
 void exportGDF(String filename)
           
 void frLayout()
          Fruchterman-Rheingold, puts nodes in 1000 x 1000 square
 void frLayout(int width, int height)
          Fruchterman-Rheingold into a width x height grid
 void gemLayout()
          GEM Layout
 Edge getEdgeByID(Integer id)
          lookup a edge by id
 EdgeSchema getEdgeSchema()
           
 long getLastModTime()
          get the time of last modification
 Node getNodeByName(String name)
          lookup a node by name
 Set getNodes()
           
 NodeSchema getNodeSchema()
           
 Number getNumber(ArchetypeEdge e)
          for NumberEdgeValue interface, returns the weight of the given edge.
 double getPageRankBias()
           
 Collection groupAndSortBy(Field field)
           
 Collection groupAndSortBy(PySequence seq, Field field)
           
 Collection groupAndSortEdgesBy(String field)
           
 Collection groupAndSortNodesBy(String field)
           
 Collection groupBy(Field field)
           
 Collection groupBy(PySequence seq, Field field)
           
 Collection groupEdgesBy(String field)
           
 Collection groupNodesBy(String field)
           
 void hideDisconnected()
           
 void isomLayout()
          ISOM Layout, asks every 30 seconds if you want to continue
 void isomLayout(int max)
          ISOM Layout for max steps
 void jfrLayout()
          the JUNG Fructerman-Rheingold Layout
 void jkkLayout1()
          the JUNG Kamada-Kawai (regular)
 void jkkLayout2()
          the JUNG Kamada-Kawai (int)
 void jSpringLayout()
          the JUNG Spring Layout (seems a little broken).
 void jSpringLayout(int max)
          run the JUNG spring layout for max iterations
 void kkLayout()
          Kamada-Kawai, puts nodes in 1000 x 1000 square
 void kkLayout(int width, int height)
          Kamada-Kawai into a width x height grid
 void layout(Layout lay)
          basic layout command, runs until completes or 30 seconds depending on if the layout is iterative
 void layout(Layout lay, int mi)
          runs the layout for some number of iterations (mi).
 void makeBarabasiAlbertRandom(int vert, int edges, int evolve)
           
 void makeEppsteinRandom(int nodes, int edges, int r)
           
 void makeErdosRenyiRandom(int nodes, double p)
           
 void makeFromDL(String filename)
           
 void makeFromGDF(String filename)
           
 void makeFromGenerator(GraphGenerator gg)
           
 void makeFromGML(String filename)
           
 void makeFromPajek(String filename)
           
 void makeKleinbergRandom(int nodes, double clust)
           
 void makeLattice1DRandom(int nodes, boolean tor)
           
 void makeLattice2DRandom(int nodes, boolean tor)
           
 void makeSimpleDirectedRandom(int nodes, int edges)
           
 void makeSimpleRandom(int nodes, int edges)
           
 void mdsLayout()
          Multidimensional scaling layout based on edge weight
 void morph(int state, long duration)
           
 void morph(String state, long duration)
           
 void moveLayout(double newX, double newY)
           
 void moveLayout(int newX, int newY)
          moves the nodes to a new origin
 void physicsLayout()
          physics layout, asks every 30 seconds if you want to keep running
 void physicsLayout(boolean gather, int max)
          physics layout
 void physicsLayout(int max)
          run physics layout for max steps
 void radialLayout(Node center)
          places all nodes in a growing radius around center
 void radialLayout(Node center, PySequence seq)
           
 void randomLayout()
          randomly places nodes in a 1000 x 1000 grid
 void randomLayout(int width, int height)
          randomly places nodes in a width x height grid
 void readjustEdges()
          moves edges so they don't overlap
 Set remove(PySequence seq)
          remove nodes and edges from the graph
 void removeComplete(PySequence seq)
          remove nodes and edges completely from the system (all states)
 Set removeDisconnected()
           
 Set removeEdge(Edge e)
          remove an edge from the graph
 void removeEdgeComplete(Edge e)
          removes an edge completely.
 Set removeNode(Node n)
          remove a node from the graph
 void removeNodeComplete(Node n)
          removes a node completely (node, and all edges connected to it, will likely be unrecoverable).
 Set removeSelfLoops()
           
 void rescaleLayout(double percent)
          rescales the layout to %percent
 void rescaleLayout(double xpercent, double ypercent)
          rescales the layout to %xpercent X %ypercent
 void rescaleLayout(int width, int height)
          rescales nodes to fit into width x height
 void resetLastMod()
          resets the last mod so we don't have to update fields
 void resizeLinear(Field f, double start, double end)
           
 void resizeRandom(Field f, double start, double end)
           
 void setIdToEdge(Edge e)
          put the edge into the table, will not work if the id = -1.
 void setNumber(ArchetypeEdge edge, Number number)
          needed for NumberEdgeValue interface
 void setPageRankBias(double bias)
           
 void setRankerWeightField(Field f)
           
 Collection sortBy(Field field)
           
 Collection sortBy(PySequence seq, Field field)
           
 void springLayout()
          spring layout, runs for 30 seconds and asks if you want to continue
 void springLayout(int max)
          spring layout for max iterations
 void sugiyamaLayout()
          Sugiyama
 void sugiyamaLayout(boolean bends)
          Sugiyama
 void sugiyamaLayout2()
          Sugiyama
static Color toColor(Object object)
           
static double toDouble(Object object)
           
 void translateLayout(double newX, double newY)
           
 void translateLayout(int newX, int newY)
          moves the nodes to a new origin
 Set weakComponentClusters()
          do weak component clustering
 void weightedKKLayout()
          the JUNG Kamada-Kawai (regular)
 void weightedSpringLayout(int min, int max)
          spring layout, runs for 30 seconds and asks if you want to continue
 void weightedSpringLayout(int minL, int maxL, int max)
          spring layout for max iterations
 
Methods inherited from class edu.uci.ics.jung.graph.impl.AbstractSparseGraph
addEdge, addVertex, getEdges, getVertices, isDirected, removeEdge, removeEdges, removeVertex, removeVertices
 
Methods inherited from class edu.uci.ics.jung.graph.impl.AbstractArchetypeGraph
addListener, copy, getEdgeConstraints, getVertexConstraints, newInstance, numEdges, numVertices, removeAllEdges, removeAllVertices, removeListener, toString
 
Methods inherited from class edu.uci.ics.jung.utils.UserDataDelegate
addUserDatum, clone, containsUserDatumKey, getUserDatum, getUserDatumCopyAction, getUserDatumKeyIterator, importUserData, removeUserDatum, setUserDataFactory, setUserDatum
 
Methods inherited from class java.lang.Object
equals, getClass, hashCode, notify, notifyAll, wait, wait, wait
 
Methods inherited from interface edu.uci.ics.jung.graph.ArchetypeGraph
addListener, copy, getEdgeConstraints, getVertexConstraints, newInstance, numEdges, numVertices, removeAllEdges, removeAllVertices, removeListener
 
Methods inherited from interface edu.uci.ics.jung.utils.UserDataContainer
addUserDatum, clone, containsUserDatumKey, getUserDatum, getUserDatumCopyAction, getUserDatumKeyIterator, importUserData, removeUserDatum, setUserDatum
 

Constructor Detail

Graph

public Graph(FrameListener display,
             InterpreterAbstraction interp)
create a new graph. Must be tied to a display object right now as well as an interpreter instance. Will probably relax that in the future

Parameters:
display - something we render to
interp - the interpreter

Graph

public Graph(FrameListener display,
             InterpreterAbstraction interp,
             boolean multiedge)
create a new graph. Must be tied to a display object right now as well as an interpreter instance. Will probably relax that in the future

Parameters:
display - something we render to
interp - the interpreter
Method Detail

getLastModTime

public long getLastModTime()
get the time of last modification


resetLastMod

public void resetLastMod()
resets the last mod so we don't have to update fields


getNodeByName

public Node getNodeByName(String name)
lookup a node by name

Parameters:
name - the node name
Returns:
the node object or null if not found

getEdgeByID

public Edge getEdgeByID(Integer id)
lookup a edge by id

Parameters:
id - the edge id
Returns:
the edge object or null if not found

setIdToEdge

public void setIdToEdge(Edge e)
put the edge into the table, will not work if the id = -1. Will overwrite previous entry

Parameters:
e - the edge

addNode

public Node addNode(Node n)
used to load nodes from the database into the graph

Parameters:
n - the node we're adding
Returns:
the added node (possibly a different object)

addNode

public Node addNode(String name)
user's API for adding a new node to the graph and database

Parameters:
name - the new node name
Returns:
a new node object

addEdge

public Edge addEdge(Edge e)
used to load edges from the database into the graph

Parameters:
e - the edge to add
Returns:
the created edge

addEdgeNoCheck

public Edge addEdgeNoCheck(Edge e)
use this if you know the storage object already contains the edge. Shortcut for speeding things up


addDirectedEdge

public DirectedEdge addDirectedEdge(Node source,
                                    Node dest)
user's API for adding a new directed edge to the graph and database

Parameters:
source - source node
dest - destinatin node
Returns:
a new DirectedEdge between source and dest

addDirectedEdgeWID

public DirectedEdge addDirectedEdgeWID(Node source,
                                       Node dest,
                                       int id)
user's API for adding a new directed edge to the graph and database

Parameters:
source - source node
dest - destinatin node
id - override the id creation from the storage factory
Returns:
a new DirectedEdge between source and dest

addUndirectedEdge

public UndirectedEdge addUndirectedEdge(Node node1,
                                        Node node2)

addUndirectedEdgeWID

public UndirectedEdge addUndirectedEdgeWID(Node node1,
                                           Node node2,
                                           int id)

addEdge

public UndirectedEdge addEdge(Node node1,
                              Node node2)
user's API shortcut for adding a new undirected edge.


removeNode

public Set removeNode(Node n)
remove a node from the graph

Parameters:
n - the node to remove

removeNodeComplete

public void removeNodeComplete(Node n)
removes a node completely (node, and all edges connected to it, will likely be unrecoverable). Removes from all states.

Parameters:
n - the node to remove

removeEdgeComplete

public void removeEdgeComplete(Edge e)
removes an edge completely. Removes from all states.

Parameters:
e - the node to remove

removeComplete

public void removeComplete(PySequence seq)
remove nodes and edges completely from the system (all states)

Parameters:
seq - the nodes + edges

removeEdge

public Set removeEdge(Edge e)
remove an edge from the graph

Parameters:
e - the edge to remove

remove

public Set remove(PySequence seq)
remove nodes and edges from the graph

Parameters:
seq - the nodes + edges

complement

public Set complement(PySequence seq)
returns the complement (e.g. all nodes/edges in the graph that are not in the set). If the set contains only nodes only nodes will be returned. Likewise for edges. If the set contains both, both nodes and edges will be returned.

Parameters:
seq - the nodes and/or edges

complement

public Set complement(GraphElement t)
returns all nodes/edges in the graph that are NOT the argument node/edge


add

public void add(PySequence seq)
add nodes and edges from the graph

Parameters:
seq - the nodes + edges

getNodes

public Set getNodes()
Returns:
all the nodes in the graph

toColor

public static Color toColor(Object object)
Returns:
figures out if you have a Color object, Python object, or a string object, automagically converts

toDouble

public static double toDouble(Object object)
Returns:
figures out if you have a Double object, Python object and automatically converts

readjustEdges

public void readjustEdges()
moves edges so they don't overlap


kkLayout

public void kkLayout()
Kamada-Kawai, puts nodes in 1000 x 1000 square


sugiyamaLayout

public void sugiyamaLayout()
Sugiyama


sugiyamaLayout

public void sugiyamaLayout(boolean bends)
Sugiyama


sugiyamaLayout2

public void sugiyamaLayout2()
Sugiyama


dagLayout

public void dagLayout()
DAG


frLayout

public void frLayout()
Fruchterman-Rheingold, puts nodes in 1000 x 1000 square


mdsLayout

public void mdsLayout()
Multidimensional scaling layout based on edge weight


moveLayout

public void moveLayout(int newX,
                       int newY)
moves the nodes to a new origin

Parameters:
newX -
newY -

moveLayout

public void moveLayout(double newX,
                       double newY)

translateLayout

public void translateLayout(int newX,
                            int newY)
moves the nodes to a new origin

Parameters:
newX -
newY -

translateLayout

public void translateLayout(double newX,
                            double newY)

rescaleLayout

public void rescaleLayout(int width,
                          int height)
rescales nodes to fit into width x height

Parameters:
width - the rescale width
height - the rescale height

rescaleLayout

public void rescaleLayout(double percent)
rescales the layout to %percent

Parameters:
percent - the percent to shrink/grow

rescaleLayout

public void rescaleLayout(double xpercent,
                          double ypercent)
rescales the layout to %xpercent X %ypercent

Parameters:
xpercent - the percent to shrink/grow
ypercent - the percent to shrink/grow

radialLayout

public void radialLayout(Node center)
places all nodes in a growing radius around center

Parameters:
center - the node to put in the center

radialLayout

public void radialLayout(Node center,
                         PySequence seq)

randomLayout

public void randomLayout()
randomly places nodes in a 1000 x 1000 grid


randomLayout

public void randomLayout(int width,
                         int height)
randomly places nodes in a width x height grid

Parameters:
width - width
height - height

jfrLayout

public void jfrLayout()
the JUNG Fructerman-Rheingold Layout


jkkLayout1

public void jkkLayout1()
the JUNG Kamada-Kawai (regular)


jkkLayout2

public void jkkLayout2()
the JUNG Kamada-Kawai (int)


weightedKKLayout

public void weightedKKLayout()
the JUNG Kamada-Kawai (regular)


frLayout

public void frLayout(int width,
                     int height)
Fruchterman-Rheingold into a width x height grid

Parameters:
width -
height -

kkLayout

public void kkLayout(int width,
                     int height)
Kamada-Kawai into a width x height grid

Parameters:
width -
height -

physicsLayout

public void physicsLayout(boolean gather,
                          int max)
physics layout

Parameters:
gather - merges connected nodes first (not very useful)
max - loops max times

physicsLayout

public void physicsLayout()
physics layout, asks every 30 seconds if you want to keep running


physicsLayout

public void physicsLayout(int max)
run physics layout for max steps

Parameters:
max - the number of steps

jSpringLayout

public void jSpringLayout()
the JUNG Spring Layout (seems a little broken). Asks every 30 seconds if you want to keep running


jSpringLayout

public void jSpringLayout(int max)
run the JUNG spring layout for max iterations

Parameters:
max - the number of iterations

circleLayout

public void circleLayout()
places all nodes in a circle


binPackLayout

public void binPackLayout()
packs all nodes


binPackLayout

public void binPackLayout(boolean rescale)
packs all nodes


circleLayout

public void circleLayout(Field f,
                         Node c)
places all nodes in a circle with node c in the middle and its neighbors around that center with a radius proportional to field f (all nodes that are not neighbors of c will be left as is)

Parameters:
f - the field to use to calc the radius
c - the node to put in the center

circleLayout

public void circleLayout(Field f,
                         Node c,
                         double xorigin,
                         double yorigin)
places all nodes in a circle with node c in the middle and its neighbors around that center with a radius proportional to field f (all nodes that are not neighbors of c will be left as is)

Parameters:
f - the field to use to calc the radius
c - the node to put in the center
xorigin - the x location for the center node
yorigin - the y location for the center node

springLayout

public void springLayout()
spring layout, runs for 30 seconds and asks if you want to continue


springLayout

public void springLayout(int max)
spring layout for max iterations

Parameters:
max - number of iterations

weightedSpringLayout

public void weightedSpringLayout(int min,
                                 int max)
spring layout, runs for 30 seconds and asks if you want to continue


weightedSpringLayout

public void weightedSpringLayout(int minL,
                                 int maxL,
                                 int max)
spring layout for max iterations

Parameters:
max - number of iterations

gemLayout

public void gemLayout()
GEM Layout


isomLayout

public void isomLayout()
ISOM Layout, asks every 30 seconds if you want to continue


isomLayout

public void isomLayout(int max)
ISOM Layout for max steps

Parameters:
max - the number of iterations

layout

public void layout(Layout lay)
basic layout command, runs until completes or 30 seconds depending on if the layout is iterative

Parameters:
lay - the layout to run

centerAfterLayout

public void centerAfterLayout(boolean state)
should we center after doing a layout disable this to control it yourself


layout

public void layout(Layout lay,
                   int mi)
runs the layout for some number of iterations (mi). If mi == Integer.MAX_VALUE this will run until the layout completes or if it is iterative it will ask every 30 seconds if you want to continue

Parameters:
lay - the layout to run
mi - the maximum iterations

biComponentClusters

public Set biComponentClusters()
do Bi-Component Clustering

Returns:
a set of sets

edgeBetweennessClusters

public Set edgeBetweennessClusters(int numEdgesToRemove)
do Edge betweenness clustering

Parameters:
numEdgesToRemove - edges to remove
Returns:
a set of sets

weakComponentClusters

public Set weakComponentClusters()
do weak component clustering

Returns:
a set of sets

exactFlowCommunity

public Set exactFlowCommunity(int cohesion)
doesn't do anything right now


clusters

public static Set clusters(Graph graph,
                           GraphClusterer clusterer)
meta clustering algorithm, takes a clustering algorithm and a graph and returns a set of sets

Parameters:
graph - the graph to analyze
clusterer - the clustering algorithm to use
Returns:
a set of sets

setNumber

public void setNumber(ArchetypeEdge edge,
                      Number number)
needed for NumberEdgeValue interface

Specified by:
setNumber in interface NumberEdgeValue

getNumber

public Number getNumber(ArchetypeEdge e)
for NumberEdgeValue interface, returns the weight of the given edge.

Specified by:
getNumber in interface NumberEdgeValue

computeAbstractRanker

public void computeAbstractRanker(AbstractRanker centrality,
                                  String guessKey,
                                  ArchetypeGraph ag)
computes the ranking for nodes or edges and deposits the results based on guessKey

Parameters:
centrality - the ranker
guessKey - the place to put the results

computeBetweennessCentrality

public void computeBetweennessCentrality()

setPageRankBias

public void setPageRankBias(double bias)

getPageRankBias

public double getPageRankBias()

setRankerWeightField

public void setRankerWeightField(Field f)

computePageRank

public void computePageRank()

computeDegreeDistributionRank

public void computeDegreeDistributionRank()

computeHITS

public void computeHITS()

computeRandomWalkBetweenness

public void computeRandomWalkBetweenness()

computeDegrees

public void computeDegrees()

addNodeField

public Field addNodeField(String fieldName,
                          int sqlType,
                          Object defaultValue)

addEdgeField

public Field addEdgeField(String fieldName,
                          int sqlType,
                          Object defaultValue)

getNodeSchema

public NodeSchema getNodeSchema()

getEdgeSchema

public EdgeSchema getEdgeSchema()

sortBy

public Collection sortBy(PySequence seq,
                         Field field)

sortBy

public Collection sortBy(Field field)

groupBy

public Collection groupBy(PySequence seq,
                          Field field)

groupBy

public Collection groupBy(Field field)

groupAndSortBy

public Collection groupAndSortBy(Field field)

groupAndSortBy

public Collection groupAndSortBy(PySequence seq,
                                 Field field)

groupAndSortNodesBy

public Collection groupAndSortNodesBy(String field)

groupNodesBy

public Collection groupNodesBy(String field)

groupAndSortEdgesBy

public Collection groupAndSortEdgesBy(String field)

groupEdgesBy

public Collection groupEdgesBy(String field)

makeBarabasiAlbertRandom

public void makeBarabasiAlbertRandom(int vert,
                                     int edges,
                                     int evolve)

makeSimpleRandom

public void makeSimpleRandom(int nodes,
                             int edges)

makeSimpleDirectedRandom

public void makeSimpleDirectedRandom(int nodes,
                                     int edges)

makeEppsteinRandom

public void makeEppsteinRandom(int nodes,
                               int edges,
                               int r)

makeErdosRenyiRandom

public void makeErdosRenyiRandom(int nodes,
                                 double p)

makeLattice1DRandom

public void makeLattice1DRandom(int nodes,
                                boolean tor)

makeLattice2DRandom

public void makeLattice2DRandom(int nodes,
                                boolean tor)

makeKleinbergRandom

public void makeKleinbergRandom(int nodes,
                                double clust)

makeFromGenerator

public void makeFromGenerator(GraphGenerator gg)

makeFromGML

public void makeFromGML(String filename)

makeFromPajek

public void makeFromPajek(String filename)

makeFromDL

public void makeFromDL(String filename)

makeFromGDF

public void makeFromGDF(String filename)
                 throws IOException
Throws:
IOException

exportGDF

public void exportGDF(String filename)

morph

public void morph(String state,
                  long duration)

morph

public void morph(int state,
                  long duration)

colorize

public void colorize(Field f)

colorize

public void colorize(Field f,
                     Color start,
                     Color end)

colorize

public void colorize(Field f,
                     String start,
                     String end)

colorize

public void colorize(Field f,
                     Color start,
                     Color middle,
                     Color end)

colorize

public void colorize(Field f,
                     String start,
                     String middle,
                     String end)

resizeRandom

public void resizeRandom(Field f,
                         double start,
                         double end)

resizeLinear

public void resizeLinear(Field f,
                         double start,
                         double end)

density

public double density()

removeSelfLoops

public Set removeSelfLoops()

removeDisconnected

public Set removeDisconnected()

hideDisconnected

public void hideDisconnected()