public class PajekNetReader<G extends edu.uci.ics.jung.graph.Graph<V,E>,V,E>
extends java.lang.Object
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 3Here 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
Modifier and Type | Class and Description |
---|---|
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. |
Modifier and Type | Field and Description |
---|---|
protected org.apache.commons.collections4.Factory<E> |
edge_factory |
protected edu.uci.ics.jung.algorithms.util.SettableTransformer<E,java.lang.Number> |
edge_weights |
protected static org.apache.commons.collections4.Predicate<java.lang.String> |
l_pred |
protected org.apache.commons.collections4.Factory<V> |
vertex_factory |
protected edu.uci.ics.jung.algorithms.util.SettableTransformer<V,java.lang.String> |
vertex_labels
The map for vertex labels (if any) created by this class.
|
protected edu.uci.ics.jung.algorithms.util.SettableTransformer<V,java.awt.geom.Point2D> |
vertex_locations
The map for vertex locations (if any) defined by this class.
|
Constructor and Description |
---|
PajekNetReader(org.apache.commons.collections4.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.collections4.Factory<V> vertex_factory,
org.apache.commons.collections4.Factory<E> edge_factory)
Creates a PajekNetReader instance with the specified vertex and edge factories.
|
Modifier and Type | Method and Description |
---|---|
protected E |
createAddEdge(java.util.StringTokenizer st,
V v1,
edu.uci.ics.jung.graph.util.EdgeType directed,
edu.uci.ics.jung.graph.Graph<V,E> g,
java.util.List<V> id,
org.apache.commons.collections4.Factory<E> edge_factory) |
edu.uci.ics.jung.algorithms.util.SettableTransformer<E,java.lang.Number> |
getEdgeWeightTransformer()
Returns a transformer from edges to their weights.
|
edu.uci.ics.jung.algorithms.util.SettableTransformer<V,java.lang.String> |
getVertexLabeller()
Returns a transformer from vertices to their labels.
|
edu.uci.ics.jung.algorithms.util.SettableTransformer<V,java.awt.geom.Point2D> |
getVertexLocationTransformer() |
G |
load(java.io.Reader reader,
org.apache.commons.collections4.Factory<? extends G> graph_factory)
Returns the graph created by parsing the specified reader, as created
by the specified factory.
|
G |
load(java.io.Reader reader,
G g)
Populates the graph
g with the graph represented by the
Pajek-format data supplied by reader . |
G |
load(java.lang.String filename,
org.apache.commons.collections4.Factory<? extends G> graph_factory)
Returns the graph created by parsing the specified file, as created
by the specified factory.
|
G |
load(java.lang.String filename,
G g)
Returns the graph created by parsing the specified file, by populating the
specified graph.
|
void |
setEdgeWeightTransformer(edu.uci.ics.jung.algorithms.util.SettableTransformer<E,java.lang.Number> edge_weights)
Provides a transformer which will be used to write out edge weights.
|
void |
setVertexLabeller(edu.uci.ics.jung.algorithms.util.SettableTransformer<V,java.lang.String> vertex_labels)
Provides a transformer which will be used to write out the vertex labels.
|
void |
setVertexLocationTransformer(edu.uci.ics.jung.algorithms.util.SettableTransformer<V,java.awt.geom.Point2D> vertex_locations)
Provides a transformer which will be used to write out the vertex locations.
|
protected java.lang.String |
skip(java.io.BufferedReader br,
org.apache.commons.collections4.Predicate<java.lang.String> p)
Returns the first line read from
br for which p
returns true , or null if there is no
such line. |
protected org.apache.commons.collections4.Factory<V> vertex_factory
protected org.apache.commons.collections4.Factory<E> edge_factory
protected edu.uci.ics.jung.algorithms.util.SettableTransformer<V,java.lang.String> vertex_labels
protected edu.uci.ics.jung.algorithms.util.SettableTransformer<V,java.awt.geom.Point2D> vertex_locations
protected edu.uci.ics.jung.algorithms.util.SettableTransformer<E,java.lang.Number> edge_weights
protected static final org.apache.commons.collections4.Predicate<java.lang.String> l_pred
public PajekNetReader(org.apache.commons.collections4.Factory<V> vertex_factory, org.apache.commons.collections4.Factory<E> edge_factory)
vertex_factory
- the factory to use to create vertex objectsedge_factory
- the factory to use to create edge objectspublic PajekNetReader(org.apache.commons.collections4.Factory<E> edge_factory)
V
to be assignment-compatible with
an Integer
value.edge_factory
- the factory to use to create edge objectspublic G load(java.lang.String filename, org.apache.commons.collections4.Factory<? extends G> graph_factory) throws java.io.IOException
java.io.IOException
public G load(java.io.Reader reader, org.apache.commons.collections4.Factory<? extends G> graph_factory) throws java.io.IOException
java.io.IOException
public G load(java.lang.String filename, G g) throws java.io.IOException
java.io.IOException
public G load(java.io.Reader reader, G g) throws java.io.IOException
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.
java.io.IOException
protected E createAddEdge(java.util.StringTokenizer st, V v1, edu.uci.ics.jung.graph.util.EdgeType directed, edu.uci.ics.jung.graph.Graph<V,E> g, java.util.List<V> id, org.apache.commons.collections4.Factory<E> edge_factory)
protected java.lang.String skip(java.io.BufferedReader br, org.apache.commons.collections4.Predicate<java.lang.String> p) throws java.io.IOException
br
for which p
returns true
, or null
if there is no
such line.java.io.IOException
public edu.uci.ics.jung.algorithms.util.SettableTransformer<V,java.awt.geom.Point2D> getVertexLocationTransformer()
public void setVertexLocationTransformer(edu.uci.ics.jung.algorithms.util.SettableTransformer<V,java.awt.geom.Point2D> vertex_locations)
public edu.uci.ics.jung.algorithms.util.SettableTransformer<V,java.lang.String> getVertexLabeller()
public void setVertexLabeller(edu.uci.ics.jung.algorithms.util.SettableTransformer<V,java.lang.String> vertex_labels)
public edu.uci.ics.jung.algorithms.util.SettableTransformer<E,java.lang.Number> getEdgeWeightTransformer()
public void setEdgeWeightTransformer(edu.uci.ics.jung.algorithms.util.SettableTransformer<E,java.lang.Number> edge_weights)