package org.deeplearning4j.graph.data.impl; import org.deeplearning4j.graph.api.Vertex; import org.deeplearning4j.graph.data.VertexLoader; import org.deeplearning4j.graph.exception.ParseException; import java.io.BufferedReader; import java.io.File; import java.io.FileReader; import java.io.IOException; import java.util.ArrayList; import java.util.List; /**Load vertex information, one per line of form "0<delim>Some text attribute/label" */ public class DelimitedVertexLoader implements VertexLoader<String> { private final String delimiter; private final String[] ignoreLinesPrefix; public DelimitedVertexLoader(String delimiter) { this(delimiter, null); } public DelimitedVertexLoader(String delimiter, String... ignoreLinesPrefix) { this.delimiter = delimiter; this.ignoreLinesPrefix = ignoreLinesPrefix; } @Override public List<Vertex<String>> loadVertices(String path) throws IOException { List<Vertex<String>> vertices = new ArrayList<>(); int lineCount = 0; try (BufferedReader br = new BufferedReader(new FileReader(new File(path)))) { String line; while ((line = br.readLine()) != null) { lineCount++; if (ignoreLinesPrefix != null) { boolean skipLine = false; for (String s : ignoreLinesPrefix) { if (line.startsWith(s)) { skipLine = true; break; } } if (skipLine) continue; } int idx = line.indexOf(delimiter); if (idx == -1) throw new ParseException("Error parsing line (could not find delimiter): " + line); String first = line.substring(0, idx); String second = line.substring(idx + 1); vertices.add(new Vertex<>(Integer.parseInt(first), second)); } } return vertices; } }