Class PajekNetReader<G extends Graph<V,E>,V,E>
- java.lang.Object
-
- edu.uci.ics.jung.io.PajekNetReader<G,V,E>
-
public class PajekNetReader<G extends Graph<V,E>,V,E> extends java.lang.ObjectReads aGraphfrom 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
IllegalArgumentExceptionis 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:
- vertex ids (each must have a value from 1 to n, where n is the number of vertices)
- vertex labels (must be in quotes if interrupted by whitespace)
- directed edge connections (single or list)
- undirected edge connections (single or list)
- edge weights (not compatible with edges specified in list form)
note: this version of PajekNetReader does not support multiple edge weights, as PajekNetFile does; this behavior is consistent with the NET format. - vertex locations (x and y; z coordinate is ignored)
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
- 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
Nested Classes Modifier and Type Class Description protected static classPajekNetReader.ListTagPredA Predicate which evaluates totrueif the argument ends with the string "list".protected static classPajekNetReader.StartsWithPredicateA Predicate which evaluates totrueif the argument starts with the constructor-specified String.
-
Field Summary
Fields Modifier and Type Field Description private static com.google.common.base.Predicate<java.lang.String>a_predprivate static com.google.common.base.Predicate<java.lang.String>c_predprivate static com.google.common.base.Predicate<java.lang.String>e_predprotected com.google.common.base.Supplier<E>edge_factoryprotected SettableTransformer<E,java.lang.Number>edge_weightsprotected static com.google.common.base.Predicate<java.lang.String>l_predprivate static com.google.common.base.Predicate<java.lang.String>t_predprivate static com.google.common.base.Predicate<java.lang.String>v_predUsed to specify whether the most recently read line is a Pajek-specific tag.protected com.google.common.base.Supplier<V>vertex_factoryprotected SettableTransformer<V,java.lang.String>vertex_labelsThe map for vertex labels (if any) created by this class.protected SettableTransformer<V,java.awt.geom.Point2D>vertex_locationsThe map for vertex locations (if any) defined by this class.
-
Constructor Summary
Constructors Constructor Description PajekNetReader(com.google.common.base.Supplier<E> edge_factory)Creates a PajekNetReader instance with the specified edge Supplier, and whose vertex objects correspond to the integer IDs assigned in the file.PajekNetReader(com.google.common.base.Supplier<V> vertex_factory, com.google.common.base.Supplier<E> edge_factory)Creates a PajekNetReader instance with the specified vertex and edge factories.
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description protected EcreateAddEdge(java.util.StringTokenizer st, V v1, EdgeType directed, Graph<V,E> g, java.util.List<V> id, com.google.common.base.Supplier<E> edge_factory)SettableTransformer<E,java.lang.Number>getEdgeWeightTransformer()SettableTransformer<V,java.lang.String>getVertexLabeller()SettableTransformer<V,java.awt.geom.Point2D>getVertexLocationTransformer()Gload(java.io.Reader reader, com.google.common.base.Supplier<? extends G> graph_factory)Returns the graph created by parsing the specified reader, as created by the specified Supplier.Gload(java.io.Reader reader, G g)Populates the graphgwith the graph represented by the Pajek-format data supplied byreader.Gload(java.lang.String filename, com.google.common.base.Supplier<? extends G> graph_factory)Returns the graph created by parsing the specified file, as created by the specified Supplier.Gload(java.lang.String filename, G g)Returns the graph created by parsing the specified file, by populating the specified graph.private java.lang.StringreadArcsOrEdges(java.lang.String curLine, java.io.BufferedReader br, Graph<V,E> g, java.util.List<V> id, com.google.common.base.Supplier<E> edge_factory)private voidreadVertex(java.lang.String curLine, java.util.List<V> id, int num_vertices)ParsescurLineas a reference to a vertex, and optionally assigns label and location information.voidsetEdgeWeightTransformer(SettableTransformer<E,java.lang.Number> edge_weights)Provides a Function which will be used to write out edge weights.voidsetVertexLabeller(SettableTransformer<V,java.lang.String> vertex_labels)Provides a Function which will be used to write out the vertex labels.voidsetVertexLocationTransformer(SettableTransformer<V,java.awt.geom.Point2D> vertex_locations)Provides a Function which will be used to write out the vertex locations.protected java.lang.Stringskip(java.io.BufferedReader br, com.google.common.base.Predicate<java.lang.String> p)Returns the first line read frombrfor whichpreturnstrue, ornullif there is no such line.
-
-
-
Field Detail
-
vertex_factory
protected com.google.common.base.Supplier<V> vertex_factory
-
edge_factory
protected com.google.common.base.Supplier<E> edge_factory
-
vertex_labels
protected SettableTransformer<V,java.lang.String> vertex_labels
The map for vertex labels (if any) created by this class.
-
vertex_locations
protected SettableTransformer<V,java.awt.geom.Point2D> vertex_locations
The map for vertex locations (if any) defined by this class.
-
edge_weights
protected SettableTransformer<E,java.lang.Number> edge_weights
-
v_pred
private static final com.google.common.base.Predicate<java.lang.String> v_pred
Used to specify whether the most recently read line is a Pajek-specific tag.
-
a_pred
private static final com.google.common.base.Predicate<java.lang.String> a_pred
-
e_pred
private static final com.google.common.base.Predicate<java.lang.String> e_pred
-
t_pred
private static final com.google.common.base.Predicate<java.lang.String> t_pred
-
c_pred
private static final com.google.common.base.Predicate<java.lang.String> c_pred
-
l_pred
protected static final com.google.common.base.Predicate<java.lang.String> l_pred
-
-
Constructor Detail
-
PajekNetReader
public PajekNetReader(com.google.common.base.Supplier<V> vertex_factory, com.google.common.base.Supplier<E> edge_factory)
Creates a PajekNetReader instance with the specified vertex and edge factories.- Parameters:
vertex_factory- the Supplier to use to create vertex objectsedge_factory- the Supplier to use to create edge objects
-
PajekNetReader
public PajekNetReader(com.google.common.base.Supplier<E> edge_factory)
Creates a PajekNetReader instance with the specified edge Supplier, and whose vertex objects correspond to the integer IDs assigned in the file. Note that this requiresVto be assignment-compatible with anIntegervalue.- Parameters:
edge_factory- the Supplier to use to create edge objects
-
-
Method Detail
-
load
public G load(java.lang.String filename, com.google.common.base.Supplier<? extends G> graph_factory) throws java.io.IOException
Returns the graph created by parsing the specified file, as created by the specified Supplier.- Parameters:
filename- the file from which the graph is to be readgraph_factory- used to provide a graph instance- Returns:
- a graph parsed from the specified file
- Throws:
java.io.IOException- if the graph cannot be loaded
-
load
public G load(java.io.Reader reader, com.google.common.base.Supplier<? extends G> graph_factory) throws java.io.IOException
Returns the graph created by parsing the specified reader, as created by the specified Supplier.- Parameters:
reader- the reader instance from which the graph is to be readgraph_factory- used to provide a graph instance- Returns:
- a graph parsed from the specified reader
- Throws:
java.io.IOException- if the graph cannot be loaded
-
load
public G load(java.lang.String filename, G g) throws java.io.IOException
Returns the graph created by parsing the specified file, by populating the specified graph.- Parameters:
filename- the file from which the graph is to be readg- the graph instance to populate- Returns:
- a graph parsed from the specified file
- Throws:
java.io.IOException- if the graph cannot be loaded
-
load
public G load(java.io.Reader reader, G g) throws java.io.IOException
Populates the graphgwith the graph represented by the Pajek-format data supplied byreader. Stores edge weights, if any, according tonev(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, ifgonly accepts directed edges, any undirected edges in the input are ignored.- Parameters:
reader- the reader from which the graph is to be readg- the graph instance to populate- Returns:
- a graph parsed from the specified reader
- Throws:
java.io.IOException- if the graph cannot be loaded
-
readVertex
private void readVertex(java.lang.String curLine, java.util.List<V> id, int num_vertices)ParsescurLineas a reference to a vertex, and optionally assigns label and location information.
-
readArcsOrEdges
private java.lang.String readArcsOrEdges(java.lang.String curLine, java.io.BufferedReader br, Graph<V,E> g, java.util.List<V> id, com.google.common.base.Supplier<E> edge_factory) throws java.io.IOException- Throws:
java.io.IOException
-
createAddEdge
protected E createAddEdge(java.util.StringTokenizer st, V v1, EdgeType directed, Graph<V,E> g, java.util.List<V> id, com.google.common.base.Supplier<E> edge_factory)
-
skip
protected java.lang.String skip(java.io.BufferedReader br, com.google.common.base.Predicate<java.lang.String> p) throws java.io.IOExceptionReturns the first line read frombrfor whichpreturnstrue, ornullif there is no such line.- Parameters:
br- the reader from which the graph is being readp- predicate specifying what line to accept- Returns:
- the first line from
brthat matchesp, or null - Throws:
java.io.IOException- if an error is encountered while reading frombr
-
getVertexLocationTransformer
public SettableTransformer<V,java.awt.geom.Point2D> getVertexLocationTransformer()
- Returns:
- the vertexLocationTransformer
-
setVertexLocationTransformer
public void setVertexLocationTransformer(SettableTransformer<V,java.awt.geom.Point2D> vertex_locations)
Provides a Function which will be used to write out the vertex locations.- Parameters:
vertex_locations- a container for the vertex locations
-
getVertexLabeller
public SettableTransformer<V,java.lang.String> getVertexLabeller()
- Returns:
- a mapping from vertices to their labels
-
setVertexLabeller
public void setVertexLabeller(SettableTransformer<V,java.lang.String> vertex_labels)
Provides a Function which will be used to write out the vertex labels.- Parameters:
vertex_labels- a container for the vertex labels
-
getEdgeWeightTransformer
public SettableTransformer<E,java.lang.Number> getEdgeWeightTransformer()
- Returns:
- a mapping from edges to their weights
-
setEdgeWeightTransformer
public void setEdgeWeightTransformer(SettableTransformer<E,java.lang.Number> edge_weights)
Provides a Function which will be used to write out edge weights.- Parameters:
edge_weights- a container for the edge weights
-
-