
org.deeplearning4j.graph.data.impl.DelimitedEdgeLineProcessor Maven / Gradle / Ivy
package org.deeplearning4j.graph.data.impl;
import lombok.AllArgsConstructor;
import org.deeplearning4j.graph.api.Edge;
import org.deeplearning4j.graph.data.EdgeLineProcessor;
/**A simple line processor, for data in the format
* 01\n 30\n etc. Order per line is nodeFrom -> nodeTo, in the case of directed edges
* i.e., one edge per line without any additional edge information
*/
public class DelimitedEdgeLineProcessor implements EdgeLineProcessor {
private final String delimiter;
private final String[] skipLinesStartingWith;
private final boolean directed;
public DelimitedEdgeLineProcessor(String delimiter, boolean directed){
this(delimiter,directed,null);
}
public DelimitedEdgeLineProcessor(String delimiter, boolean directed, String... skipLinesStartingWith){
this.delimiter = delimiter;
this.skipLinesStartingWith = skipLinesStartingWith;
this.directed = directed;
}
@Override
public Edge processLine(String line) {
if(skipLinesStartingWith != null){
for (String s : skipLinesStartingWith) {
if (line.startsWith(s)) return null;
}
}
String[] split = line.split(delimiter);
if(split.length != 2) throw new IllegalArgumentException("Invalid line: expected format \"" + 0 + delimiter +
1 + "\"; received \"" + line + "\"");
int from = Integer.parseInt(split[0]);
int to = Integer.parseInt(split[1]);
String edgeName = from + (directed ? "->" : "--") + to;
return new Edge<>(from,to,edgeName,directed);
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy