Graphology GEXF Utilities
GEXF parser & writer for graphology
.
For more information about the GEXF file format, you can head there.
Installation
npm install graphology-gexf
Usage
Parser
The parser must be passed a graphology
constructor and is able to read either a string, or an XMLDocument
instance.
var Graph = require('graphology');
var gexf = require('graphology-gexf');
var gexf = require('graphology-gexf/browser');
var graph = gexf.parse(Graph, string);
var graph = gexf.parse(Graph, xmlDocument);
var graph = gexf.parse(Graph, string, {addMissingNodes: true});
Arguments
- constructor GraphClass: graphology constructor to use.
- source string|Document: source data to parse.
- options ?object: parsing options:
- addMissingNodes ?boolean [
false
]: whether to add missing nodes referenced in the file's edges. - allowUndeclaredAttributes ?boolean [
false
]: whether to allow undeclared attributes for both nodes & edges, which will be considered as strings. - respectInputGraphType ?boolean [
false
]: whether to make sure the output graph type is the same as the passed constructor. By default the parser will try to optimize the graph representation to avoid wasting time and memory. But if respectInputGraphType
is true
the output graph is guaranteed to be an instance of the typed constructor you gave as first argument. This also means the parser will throw when reading a graph that cannot be represented with the given typed constructor.
Writer
The writer must be passed a graphology
instance and will output a GEXF string.
var gexf = require('graphology-gexf');
var gexf = require('graphology-gexf/browser');
var gexfString = gexf.write(graph);
var gexfString = gexf.write(graph, {
formatNode: function (key, attributes) {
return {
label: attributes.label,
attributes: {
age: attributes.age,
name: attributes.name
},
viz: {
color: '#FF0',
x: attributes.x,
y: attributes.y,
shape: 'circle',
size: 20
}
};
},
formatEdge: function (key, attributes) {
return {
label: attributes.label,
attributes: {
number: attributes.number
},
weight: attributes.weight,
viz: {
color: '#FF0',
x: attributes.x,
y: attributes.y,
shape: 'dotted',
thickness: 20
}
};
}
});
Arguments
- graph Graph: graphology instance to write.
- options ?object: Options:
- encoding ?string [
UTF-8
]: encoding declaration. - formatNode ?function: function returning the node's data to write.
- formatEdge ?function: function returning the edge's data to write.
- pretty ?boolean [
true
]: pretty-print output? - pedantic ?boolean [
false
]: whether to output a stricter gexf file to make sure it can be validated using the most restrictive gexf xsd schemas. Note that the output may lose some graph attributes when doing so. - version ?string [
1.2
]: gexf version to emit. Should be one of 1.2
or 1.3
.
Notes
Currently, mutual
(a specific gexf type for edges that is seldom used in practice) edges are parsed as undirected ones rather than two directed ones because it could produce a key conflict. An option to deal differently with this may be added in the future if it becomes a problem.