edu.uci.ics.jung.io
Class PajekNetReader<G extends Graph<V,E>,V,E>

java.lang.Object
  extended by edu.uci.ics.jung.io.PajekNetReader<G,V,E>

public class PajekNetReader<G extends Graph<V,E>,V,E>
extends Object

Reads a Graph from a Pajek NET formatted source.

If the edge constraints specify that the graph is strictly undirected, and an "*Arcs" section is encountered, or if the edge constraints specify that the graph is strictly directed, and an "*Edges" section is encountered, an IllegalArgumentException is thrown.

If the edge constraints do not permit parallel edges, only the first encountered of a set of parallel edges will be read; subsequent edges in that set will be ignored.

More restrictive edge constraints will cause vertices to be generated that are more time- and space-efficient.

At the moment, only supports the part of the specification that defines:

Here is an example format for a directed graph without edge weights and edges specified in list form:

 *vertices <# of vertices> 
 1 "a" 
 2 "b" 
 3 "c" 
 *arcslist 
 1 2 3 
 2 3  
 
Here is an example format for an undirected graph with edge weights and edges specified in non-list form:
 *vertices <# of vertices> 
 1 "a" 
 2 "b" 
 3 "c" 
 *edges 
 1 2 0.1 
 1 3 0.9 
 2 3 1.0 
 

Author:
Joshua O'Madadhain, Tom Nelson - converted to jung2
See Also:
"'Pajek - Program for Analysis and Visualization of Large Networks', Vladimir Batagelj and Andrej Mrvar, http://vlado.fmf.uni-lj.si/pub/networks/pajek/doc/pajekman.pdf"

Nested Class Summary
protected static class PajekNetReader.ListTagPred
          A Predicate which evaluates to true if the argument ends with the string "list".
protected static class PajekNetReader.StartsWithPredicate
          A Predicate which evaluates to true if the argument starts with the constructor-specified String.
 
Field Summary
protected  org.apache.commons.collections15.Factory<E> edge_factory
           
protected  SettableTransformer<E,Number> edge_weights
           
protected static org.apache.commons.collections15.Predicate<String> l_pred
           
protected  org.apache.commons.collections15.Factory<V> vertex_factory
           
protected  SettableTransformer<V,String> vertex_labels
          The map for vertex labels (if any) created by this class.
protected  SettableTransformer<V,Point2D> vertex_locations
          The map for vertex locations (if any) defined by this class.
 
Constructor Summary
PajekNetReader(org.apache.commons.collections15.Factory<E> edge_factory)
          Creates a PajekNetReader instance with the specified edge factory, and whose vertex objects correspond to the integer IDs assigned in the file.
PajekNetReader(org.apache.commons.collections15.Factory<V> vertex_factory, org.apache.commons.collections15.Factory<E> edge_factory)
          Creates a PajekNetReader instance with the specified vertex and edge factories.
 
Method Summary
protected  E createAddEdge(StringTokenizer st, V v1, EdgeType directed, Graph<V,E> g, List<V> id, org.apache.commons.collections15.Factory<E> edge_factory)
           
 SettableTransformer<E,Number> getEdgeWeightTransformer()
          Returns a transformer from edges to their weights.
 SettableTransformer<V,String> getVertexLabeller()
          Returns a transformer from vertices to their labels.
 SettableTransformer<V,Point2D> getVertexLocationTransformer()
           
 G load(Reader reader, org.apache.commons.collections15.Factory<? extends G> graph_factory)
          Returns the graph created by parsing the specified reader, as created by the specified factory.
 G load(Reader reader, G g)
          Populates the graph g with the graph represented by the Pajek-format data supplied by reader.
 G load(String filename, org.apache.commons.collections15.Factory<? extends G> graph_factory)
          Returns the graph created by parsing the specified file, as created by the specified factory.
 G load(String filename, G g)
          Returns the graph created by parsing the specified file, by populating the specified graph.
 void setEdgeWeightTransformer(SettableTransformer<E,Number> edge_weights)
          Provides a transformer which will be used to write out edge weights.
 void setVertexLabeller(SettableTransformer<V,String> vertex_labels)
          Provides a transformer which will be used to write out the vertex labels.
 void setVertexLocationTransformer(SettableTransformer<V,Point2D> vertex_locations)
          Provides a transformer which will be used to write out the vertex locations.
protected  String skip(BufferedReader br, org.apache.commons.collections15.Predicate<String> p)
          Returns the first line read from br for which p returns true, or null if there is no such line.
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

vertex_factory

protected org.apache.commons.collections15.Factory<V> vertex_factory

edge_factory

protected org.apache.commons.collections15.Factory<E> edge_factory

vertex_labels

protected SettableTransformer<V,String> vertex_labels
The map for vertex labels (if any) created by this class.


vertex_locations

protected SettableTransformer<V,Point2D> vertex_locations
The map for vertex locations (if any) defined by this class.


edge_weights

protected SettableTransformer<E,Number> edge_weights

l_pred

protected static final org.apache.commons.collections15.Predicate<String> l_pred
Constructor Detail

PajekNetReader

public PajekNetReader(org.apache.commons.collections15.Factory<V> vertex_factory,
                      org.apache.commons.collections15.Factory<E> edge_factory)
Creates a PajekNetReader instance with the specified vertex and edge factories.

Parameters:
vertex_factory - the factory to use to create vertex objects
edge_factory - the factory to use to create edge objects

PajekNetReader

public PajekNetReader(org.apache.commons.collections15.Factory<E> edge_factory)
Creates a PajekNetReader instance with the specified edge factory, and whose vertex objects correspond to the integer IDs assigned in the file. Note that this requires V to be assignment-compatible with an Integer value.

Parameters:
edge_factory - the factory to use to create edge objects
Method Detail

load

public G load(String filename,
              org.apache.commons.collections15.Factory<? extends G> graph_factory)
                          throws IOException
Returns the graph created by parsing the specified file, as created by the specified factory.

Throws:
IOException

load

public G load(Reader reader,
              org.apache.commons.collections15.Factory<? extends G> graph_factory)
                          throws IOException
Returns the graph created by parsing the specified reader, as created by the specified factory.

Throws:
IOException

load

public G load(String filename,
              G g)
                          throws IOException
Returns the graph created by parsing the specified file, by populating the specified graph.

Throws:
IOException

load

public G load(Reader reader,
              G g)
                          throws IOException
Populates the graph g with the graph represented by the Pajek-format data supplied by reader. Stores edge weights, if any, according to nev (if non-null).

Any existing vertices/edges of g, if any, are unaffected.

The edge data are filtered according to g's constraints, if any; thus, if g only accepts directed edges, any undirected edges in the input are ignored.

Throws:
IOException

createAddEdge

protected E createAddEdge(StringTokenizer st,
                          V v1,
                          EdgeType directed,
                          Graph<V,E> g,
                          List<V> id,
                          org.apache.commons.collections15.Factory<E> edge_factory)

skip

protected String skip(BufferedReader br,
                      org.apache.commons.collections15.Predicate<String> p)
               throws IOException
Returns the first line read from br for which p returns true, or null if there is no such line.

Throws:
IOException

getVertexLocationTransformer

public SettableTransformer<V,Point2D> getVertexLocationTransformer()
Returns:
the vertexLocationTransformer

setVertexLocationTransformer

public void setVertexLocationTransformer(SettableTransformer<V,Point2D> vertex_locations)
Provides a transformer which will be used to write out the vertex locations.


getVertexLabeller

public SettableTransformer<V,String> getVertexLabeller()
Returns a transformer from vertices to their labels.


setVertexLabeller

public void setVertexLabeller(SettableTransformer<V,String> vertex_labels)
Provides a transformer which will be used to write out the vertex labels.


getEdgeWeightTransformer

public SettableTransformer<E,Number> getEdgeWeightTransformer()
Returns a transformer from edges to their weights.


setEdgeWeightTransformer

public void setEdgeWeightTransformer(SettableTransformer<E,Number> edge_weights)
Provides a transformer which will be used to write out edge weights.



Copyright © 2009. All Rights Reserved.