From 5a8cb5b91f23967bec1243dcf813137fa22ec78c Mon Sep 17 00:00:00 2001 From: Jonas Blatt Date: Fri, 7 Jan 2022 22:34:12 +0100 Subject: [PATCH 1/7] Add support for directed graphs --- README.md | 1 + pom.xml | 2 +- src/main/java/io/github/tonyzzx/gspan/Main.java | 13 ++++++++++++- src/main/java/io/github/tonyzzx/gspan/gSpan.java | 4 ++-- 4 files changed, 16 insertions(+), 4 deletions(-) diff --git a/README.md b/README.md index 5d648aa..fbedd21 100644 --- a/README.md +++ b/README.md @@ -44,6 +44,7 @@ usage: gSpan -h,--help Help -i,--min-node Minimum number of nodes for each sub-graph -r,--result File path of result + -t,--graph-type Type of graph: directed / undirected (default: undirected) -s,--sup (Required) Minimum support ``` diff --git a/pom.xml b/pom.xml index 84f8c75..9b01992 100644 --- a/pom.xml +++ b/pom.xml @@ -6,7 +6,7 @@ gSpan gSpan.Java - 1.0 + 1.1 diff --git a/src/main/java/io/github/tonyzzx/gspan/Main.java b/src/main/java/io/github/tonyzzx/gspan/Main.java index 04ba9e9..419e0a0 100644 --- a/src/main/java/io/github/tonyzzx/gspan/Main.java +++ b/src/main/java/io/github/tonyzzx/gspan/Main.java @@ -18,13 +18,16 @@ public static void main(String[] args) throws IOException { try (FileWriter writer = new FileWriter(outFile)) { gSpan gSpan = new gSpan(); System.out.println("gSpan is mining..."); - gSpan.run(reader, writer, arguments.minSup, arguments.maxNodeNum, arguments.minNodeNum); + gSpan.run(reader, writer, arguments.minSup, arguments.maxNodeNum, arguments.minNodeNum, arguments.directed); System.out.println("It's done! The result is in the " + arguments.outFilePath + "."); } } } private static class Arguments { + public static final String GRAPH_TYPE_UNDIRECTED = "undirected"; + public static final String GRAPH_TYPE_DIRECTED = "directed"; + public static final String GRAPH_TYPE_DEFAULT = GRAPH_TYPE_UNDIRECTED; private static Arguments arguments; private String[] args; @@ -34,6 +37,7 @@ private static class Arguments { long minNodeNum = 0; long maxNodeNum = Long.MAX_VALUE; String outFilePath; + boolean directed = false; private Arguments(String[] args) { this.args = args; @@ -59,6 +63,7 @@ private void initFromCmd() { options.addOption("i", "min-node", true, "Minimum number of nodes for each sub-graph"); options.addOption("a", "max-node", true, "Maximum number of nodes for each sub-graph"); options.addOption("r", "result", true, "File path of result"); + options.addOption("t", "graph-type", true, "Type of graph: " + GRAPH_TYPE_DIRECTED + " / " + GRAPH_TYPE_UNDIRECTED + " (default: " + GRAPH_TYPE_DEFAULT + ")"); options.addOption("h", "help", false, "Help"); CommandLineParser parser = new DefaultParser(); @@ -80,6 +85,12 @@ private void initFromCmd() { minNodeNum = Long.parseLong(cmd.getOptionValue("i", "0")); maxNodeNum = Long.parseLong(cmd.getOptionValue("a", String.valueOf(Long.MAX_VALUE))); outFilePath = cmd.getOptionValue("r", inFilePath + "_result"); + String graphType = cmd.getOptionValue("t", GRAPH_TYPE_DEFAULT); + if (!(GRAPH_TYPE_DIRECTED.equals(graphType) || GRAPH_TYPE_UNDIRECTED.equals(graphType))) { + System.out.println("Graph type not valid, was: " + graphType + ", valid: " + GRAPH_TYPE_DIRECTED + " / " + GRAPH_TYPE_UNDIRECTED); + System.exit(1); + } + directed = GRAPH_TYPE_DIRECTED.equals(graphType); } /*** diff --git a/src/main/java/io/github/tonyzzx/gspan/gSpan.java b/src/main/java/io/github/tonyzzx/gspan/gSpan.java index 93dfffb..c19135c 100644 --- a/src/main/java/io/github/tonyzzx/gspan/gSpan.java +++ b/src/main/java/io/github/tonyzzx/gspan/gSpan.java @@ -56,13 +56,13 @@ public gSpan() { * @param minNodeNum Minimum number of nodes * @throws IOException */ - void run(FileReader reader, FileWriter writers, long minSup, long maxNodeNum, long minNodeNum) throws IOException { + void run(FileReader reader, FileWriter writers, long minSup, long maxNodeNum, long minNodeNum, boolean directed) throws IOException { os = writers; ID = 0; this.minSup = minSup; maxPat_min = minNodeNum; maxPat_max = maxNodeNum; - directed = false; + this.directed = directed; read(reader); runIntern(); From d6e281849a3f82d1ece1ffe4fd88531da8ca2521 Mon Sep 17 00:00:00 2001 From: Jonas Blatt Date: Fri, 7 Jan 2022 22:42:02 +0100 Subject: [PATCH 2/7] Add "make-jar-with-dependencies" to the maven package goal --- pom.xml | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/pom.xml b/pom.xml index 9b01992..43b6f68 100644 --- a/pom.xml +++ b/pom.xml @@ -19,6 +19,15 @@ maven-assembly-plugin + + + make-jar-with-dependencies + package + + single + + + @@ -41,5 +50,5 @@ 1.4 - + \ No newline at end of file From e5acb14ba66cd70b90a4038a0cbdad10e2d279b7 Mon Sep 17 00:00:00 2001 From: Jonas Blatt Date: Fri, 7 Jan 2022 22:42:47 +0100 Subject: [PATCH 3/7] Add gSpan.Java-1.1 jar with dependencies --- target/gSpan.Java-1.1-jar-with-dependencies.jar | Bin 0 -> 75960 bytes 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 target/gSpan.Java-1.1-jar-with-dependencies.jar diff --git a/target/gSpan.Java-1.1-jar-with-dependencies.jar b/target/gSpan.Java-1.1-jar-with-dependencies.jar new file mode 100644 index 0000000000000000000000000000000000000000..78eec9267bd72a9815a151270b798c760433c717 GIT binary patch literal 75960 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

nxJVc4EqsM`r0`eY~M3@;) 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%0A#`cq_ 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 Date: Mon, 7 Feb 2022 15:20:02 +0100 Subject: [PATCH 4/7] Fix min/max node param: The max node param was ignored if it was equal to the min node param. --- .../java/io/github/tonyzzx/gspan/gSpan.java | 6 +++--- .../gSpan.Java-1.1-jar-with-dependencies.jar | Bin 75960 -> 75963 bytes 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/src/main/java/io/github/tonyzzx/gspan/gSpan.java b/src/main/java/io/github/tonyzzx/gspan/gSpan.java index c19135c..c483a40 100644 --- a/src/main/java/io/github/tonyzzx/gspan/gSpan.java +++ b/src/main/java/io/github/tonyzzx/gspan/gSpan.java @@ -180,7 +180,7 @@ private void reportSingle(Graph g, NavigableMap nCount) throws sup += Common.getValue(it.getValue()); } - if (maxPat_max > maxPat_min && g.size() > maxPat_max) + if (maxPat_max >= maxPat_min && g.size() > maxPat_max) return; if (maxPat_min > 0 && g.size() < maxPat_min) return; @@ -192,7 +192,7 @@ private void reportSingle(Graph g, NavigableMap nCount) throws private void report(int sup) throws IOException { // Filter to small/too large graphs. - if (maxPat_max > maxPat_min && DFS_CODE.countNode() > maxPat_max) + if (maxPat_max >= maxPat_min && DFS_CODE.countNode() > maxPat_max) return; if (maxPat_min > 0 && DFS_CODE.countNode() < maxPat_min) return; @@ -233,7 +233,7 @@ private void project(Projected projected) throws IOException { * still add edges within an existing sub-graph, without increasing the * number of nodes. */ - if (maxPat_max > maxPat_min && DFS_CODE.countNode() > maxPat_max) + if (maxPat_max >= maxPat_min && DFS_CODE.countNode() > maxPat_max) return; /* diff --git a/target/gSpan.Java-1.1-jar-with-dependencies.jar b/target/gSpan.Java-1.1-jar-with-dependencies.jar index 78eec9267bd72a9815a151270b798c760433c717..a5d5172e8cf4858178754a9791fbe32bc6872c61 100644 GIT binary patch delta 4492 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 Date: Tue, 1 Mar 2022 15:56:48 +0100 Subject: [PATCH 5/7] Build graphs inside the gSpan class, because the IDs of the graphs were not correct. --- .../java/io/github/tonyzzx/gspan/gSpan.java | 50 ++++++++++++++---- .../io/github/tonyzzx/gspan/model/Graph.java | 47 +--------------- .../io/github/tonyzzx/gspan/model/Vertex.java | 2 +- .../gSpan.Java-1.1-jar-with-dependencies.jar | Bin 75963 -> 75975 bytes 4 files changed, 42 insertions(+), 57 deletions(-) diff --git a/src/main/java/io/github/tonyzzx/gspan/gSpan.java b/src/main/java/io/github/tonyzzx/gspan/gSpan.java index c483a40..ca0b542 100644 --- a/src/main/java/io/github/tonyzzx/gspan/gSpan.java +++ b/src/main/java/io/github/tonyzzx/gspan/gSpan.java @@ -4,7 +4,7 @@ import java.io.FileReader; import java.io.FileWriter; import java.io.IOException; -import java.util.ArrayList; +import java.util.*; import java.util.Map.Entry; import io.github.tonyzzx.gspan.model.DFSCode; @@ -15,10 +15,6 @@ import io.github.tonyzzx.gspan.model.Projected; import io.github.tonyzzx.gspan.model.Vertex; -import java.util.NavigableMap; -import java.util.TreeMap; -import java.util.Vector; - public class gSpan { private ArrayList TRANS; private DFSCode DFS_CODE; @@ -70,11 +66,45 @@ void run(FileReader reader, FileWriter writers, long minSup, long maxNodeNum, lo private void read(FileReader is) throws IOException { BufferedReader read = new BufferedReader(is); - while (true) { - Graph g = new Graph(directed); - read = g.read(read); - if (g.isEmpty()) - break; + List result = new ArrayList<>(); + String line; + Graph g = new Graph(directed); + while ((line = read.readLine()) != null) { + result.clear(); + String[] splitRead = line.split(" "); + Collections.addAll(result, splitRead); + + if (!result.isEmpty()) { + if (result.get(0).equals("t")) { + if (!g.isEmpty()) { + g.buildEdge(); + TRANS.add(g); + } + g = new Graph(directed); + } else if (result.get(0).equals("v") && result.size() >= 3) { + // int id = Integer.parseInt(result.get(1)); + Vertex vex = new Vertex(); + vex.label = Integer.parseInt(result.get(2)); + g.add(vex); + } else if (result.get(0).equals("e") && result.size() >= 4) { + int from = Integer.parseInt(result.get(1)); + int to = Integer.parseInt(result.get(2)); + int eLabel = Integer.parseInt(result.get(3)); + + if (g.size() <= from || g.size() <= to) { + throw new IllegalStateException("Format Error: define vertex lists before edges!"); + } + + g.get(from).push(from, to, eLabel); + + if (!directed) { + g.get(to).push(to, from, eLabel); + } + } + } + } + if (!g.isEmpty()) { + g.buildEdge(); TRANS.add(g); } read.close(); diff --git a/src/main/java/io/github/tonyzzx/gspan/model/Graph.java b/src/main/java/io/github/tonyzzx/gspan/model/Graph.java index 94918f4..f426670 100644 --- a/src/main/java/io/github/tonyzzx/gspan/model/Graph.java +++ b/src/main/java/io/github/tonyzzx/gspan/model/Graph.java @@ -17,7 +17,7 @@ public Graph(boolean directed) { this.directed = directed; } - void buildEdge() { + public void buildEdge() { String buf; NavigableMap tmp = new TreeMap<>(); @@ -43,51 +43,6 @@ void buildEdge() { edge_size = id; } - public BufferedReader read(BufferedReader is) throws IOException { - ArrayList result = new ArrayList<>(); - String line; - - clear(); - - while ((line = is.readLine()) != null) { - result.clear(); - String[] splitRead = line.split(" "); - Collections.addAll(result, splitRead); - - if (!result.isEmpty()) { - if (result.get(0).equals("t")) { - if (!this.isEmpty()) { // use as delimiter - break; - } - } else if (result.get(0).equals("v") && result.size() >= 3) { - // int id = Integer.parseInt(result.get(1)); - Vertex vex = new Vertex(); - vex.label = Integer.parseInt(result.get(2)); - this.add(vex); - } else if (result.get(0).equals("e") && result.size() >= 4) { - int from = Integer.parseInt(result.get(1)); - int to = Integer.parseInt(result.get(2)); - int eLabel = Integer.parseInt(result.get(3)); - - if (this.size() <= from || this.size() <= to) { - System.out.println("Format Error: define vertex lists before edges"); - return null; - } - - this.get(from).push(from, to, eLabel); - - if (!directed) { - this.get(to).push(to, from, eLabel); - } - } - } - } - - buildEdge(); - - return is; - } - public void write(FileWriter os) throws IOException { String buf; // Sort the result of edges. diff --git a/src/main/java/io/github/tonyzzx/gspan/model/Vertex.java b/src/main/java/io/github/tonyzzx/gspan/model/Vertex.java index ea4c870..acc6ab0 100644 --- a/src/main/java/io/github/tonyzzx/gspan/model/Vertex.java +++ b/src/main/java/io/github/tonyzzx/gspan/model/Vertex.java @@ -10,7 +10,7 @@ public Vertex() { edge = new ArrayList<>(); } - void push(int from, int to, int eLabel) { + public void push(int from, int to, int eLabel) { Edge e = new Edge(); e.from = from; e.to = to; diff --git a/target/gSpan.Java-1.1-jar-with-dependencies.jar b/target/gSpan.Java-1.1-jar-with-dependencies.jar index a5d5172e8cf4858178754a9791fbe32bc6872c61..c0d7a17865eb310763dc252e480fc025280211b9 100644 GIT binary patch delta 11927 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 delta 11811 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 From dbd2de65cab27678bc982c4331448113aab7f989 Mon Sep 17 00:00:00 2001 From: Jonas Blatt Date: Thu, 30 Jun 2022 15:51:11 +0200 Subject: [PATCH 6/7] Option to merge nodes with the same label. Use -s or --single-nodes --- pom.xml | 2 +- .../java/io/github/tonyzzx/gspan/Main.java | 5 +- .../java/io/github/tonyzzx/gspan/gSpan.java | 8 ++- .../github/tonyzzx/gspan/model/DFSCode.java | 65 +++++++++++++++--- .../gSpan.Java-1.2-jar-with-dependencies.jar | Bin 0 -> 76807 bytes 5 files changed, 65 insertions(+), 15 deletions(-) create mode 100644 target/gSpan.Java-1.2-jar-with-dependencies.jar diff --git a/pom.xml b/pom.xml index 43b6f68..e9f41a0 100644 --- a/pom.xml +++ b/pom.xml @@ -6,7 +6,7 @@ gSpan gSpan.Java - 1.1 + 1.2 diff --git a/src/main/java/io/github/tonyzzx/gspan/Main.java b/src/main/java/io/github/tonyzzx/gspan/Main.java index 419e0a0..42644ea 100644 --- a/src/main/java/io/github/tonyzzx/gspan/Main.java +++ b/src/main/java/io/github/tonyzzx/gspan/Main.java @@ -18,7 +18,7 @@ public static void main(String[] args) throws IOException { try (FileWriter writer = new FileWriter(outFile)) { gSpan gSpan = new gSpan(); System.out.println("gSpan is mining..."); - gSpan.run(reader, writer, arguments.minSup, arguments.maxNodeNum, arguments.minNodeNum, arguments.directed); + gSpan.run(reader, writer, arguments.minSup, arguments.maxNodeNum, arguments.minNodeNum, arguments.directed, arguments.singleNodes); System.out.println("It's done! The result is in the " + arguments.outFilePath + "."); } } @@ -38,6 +38,7 @@ private static class Arguments { long maxNodeNum = Long.MAX_VALUE; String outFilePath; boolean directed = false; + boolean singleNodes = false; private Arguments(String[] args) { this.args = args; @@ -64,6 +65,7 @@ private void initFromCmd() { options.addOption("a", "max-node", true, "Maximum number of nodes for each sub-graph"); options.addOption("r", "result", true, "File path of result"); options.addOption("t", "graph-type", true, "Type of graph: " + GRAPH_TYPE_DIRECTED + " / " + GRAPH_TYPE_UNDIRECTED + " (default: " + GRAPH_TYPE_DEFAULT + ")"); + options.addOption("s", "single-nodes", false, "Single nodes (nodes with same label are merged)"); options.addOption("h", "help", false, "Help"); CommandLineParser parser = new DefaultParser(); @@ -91,6 +93,7 @@ private void initFromCmd() { System.exit(1); } directed = GRAPH_TYPE_DIRECTED.equals(graphType); + singleNodes = cmd.hasOption("s"); } /*** diff --git a/src/main/java/io/github/tonyzzx/gspan/gSpan.java b/src/main/java/io/github/tonyzzx/gspan/gSpan.java index ca0b542..167fb05 100644 --- a/src/main/java/io/github/tonyzzx/gspan/gSpan.java +++ b/src/main/java/io/github/tonyzzx/gspan/gSpan.java @@ -26,6 +26,7 @@ public class gSpan { private long maxPat_min; private long maxPat_max; private boolean directed; + private boolean singleNodes; private FileWriter os; // Singular vertex handling stuff [graph][vertexLabel] = count. @@ -52,13 +53,14 @@ public gSpan() { * @param minNodeNum Minimum number of nodes * @throws IOException */ - void run(FileReader reader, FileWriter writers, long minSup, long maxNodeNum, long minNodeNum, boolean directed) throws IOException { + void run(FileReader reader, FileWriter writers, long minSup, long maxNodeNum, long minNodeNum, boolean directed, boolean singleNodes) throws IOException { os = writers; ID = 0; this.minSup = minSup; maxPat_min = minNodeNum; maxPat_max = maxNodeNum; this.directed = directed; + this.singleNodes = singleNodes; read(reader); runIntern(); @@ -228,7 +230,7 @@ private void report(int sup) throws IOException { return; Graph g = new Graph(directed); - DFS_CODE.toGraph(g); + DFS_CODE.toGraph(g, singleNodes); os.write("t # " + ID + " * " + sup + System.getProperty("line.separator")); g.write(os); ++ID; @@ -381,7 +383,7 @@ private boolean isMin() { if (DFS_CODE.size() == 1) return (true); - DFS_CODE.toGraph(GRAPH_IS_MIN); + DFS_CODE.toGraph(GRAPH_IS_MIN, singleNodes); DFS_CODE_IS_MIN.clear(); NavigableMap>> root = new TreeMap<>(); diff --git a/src/main/java/io/github/tonyzzx/gspan/model/DFSCode.java b/src/main/java/io/github/tonyzzx/gspan/model/DFSCode.java index 22fa233..b7f5558 100644 --- a/src/main/java/io/github/tonyzzx/gspan/model/DFSCode.java +++ b/src/main/java/io/github/tonyzzx/gspan/model/DFSCode.java @@ -1,6 +1,8 @@ package io.github.tonyzzx.gspan.model; import java.util.ArrayList; +import java.util.HashMap; +import java.util.Map; public class DFSCode extends ArrayList { private static final long serialVersionUID = 1L; @@ -24,22 +26,64 @@ public void pop() { this.remove(this.size() - 1); } - public void toGraph(Graph g) { + public void toGraph(Graph g, boolean singleNodes) { g.clear(); - for (DFS it : this) { - g.resize(Math.max(it.from, it.to) + 1); + // Version 1: Multiple nodes for nodes with same label + if (singleNodes) { + for (DFS it : this) { + g.resize(Math.max(it.from, it.to) + 1); - if (it.fromLabel != -1) - g.get(it.from).label = it.fromLabel; - if (it.toLabel != -1) - g.get(it.to).label = it.toLabel; + if (it.fromLabel != -1) + g.get(it.from).label = it.fromLabel; + if (it.toLabel != -1) + g.get(it.to).label = it.toLabel; - g.get(it.from).push(it.from, it.to, it.eLabel); - if (!g.directed) - g.get(it.to).push(it.to, it.from, it.eLabel); + g.get(it.from).push(it.from, it.to, it.eLabel); + if (!g.directed) + g.get(it.to).push(it.to, it.from, it.eLabel); + } + } else { + g.clear(); + // Version 2: One node for nodes with the same label + + // Create label mapping + Map labelMapping = new HashMap<>(); + Map idMapping = new HashMap<>(); + int counter = 0; + for (DFS it : this) { + if (it.fromLabel != -1 && !labelMapping.containsKey(it.fromLabel)) { + labelMapping.put(it.fromLabel, counter); + counter++; + } + if (it.toLabel != -1 && !labelMapping.containsKey(it.toLabel)) { + labelMapping.put(it.toLabel, counter); + counter++; + } + if (it.fromLabel != -1) { + idMapping.put(it.from, labelMapping.get(it.fromLabel)); + } + if (it.toLabel != -1) { + idMapping.put(it.to, labelMapping.get(it.toLabel)); + } + } + // Create nodes + g.resize(counter); + // Set labels + for (Map.Entry entry : labelMapping.entrySet()) { + g.get(entry.getValue()).label = entry.getKey(); + } + // Create edges + for (DFS it : this) { + int fromId = idMapping.get(it.from); + int toId = idMapping.get(it.to); + g.get(fromId).push(fromId, toId, it.eLabel); + if (!g.directed) + g.get(toId).push(toId, fromId, it.eLabel); + } } + g.buildEdge(); } @@ -61,6 +105,7 @@ public ArrayList buildRMPath() { /** * Return number of nodes in the graph. + * * @return number of nodes in the graph */ public int countNode() { diff --git a/target/gSpan.Java-1.2-jar-with-dependencies.jar b/target/gSpan.Java-1.2-jar-with-dependencies.jar new file mode 100644 index 0000000000000000000000000000000000000000..731cf06ceed4b9654dc8370612bd9accce94b539 GIT binary patch literal 76807 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

PP4YyHgt2 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 Zz6^DUz#RfSJUQ?e3+`#yG68>!_kZs>I6wdZ literal 0 HcmV?d00001 From 899518a3730ee5decb76def1dd95c752a7330c8e Mon Sep 17 00:00:00 2001 From: Jonas Blatt Date: Fri, 1 Jul 2022 11:18:32 +0200 Subject: [PATCH 7/7] Fixes for last commit: "Option to merge nodes with the same label. Use -s or --single-nodes" --- .../java/io/github/tonyzzx/gspan/Main.java | 4 ++-- .../github/tonyzzx/gspan/model/DFSCode.java | 6 +----- .../gSpan.Java-1.2-jar-with-dependencies.jar | Bin 76807 -> 76819 bytes 3 files changed, 3 insertions(+), 7 deletions(-) diff --git a/src/main/java/io/github/tonyzzx/gspan/Main.java b/src/main/java/io/github/tonyzzx/gspan/Main.java index 42644ea..f5b7a5b 100644 --- a/src/main/java/io/github/tonyzzx/gspan/Main.java +++ b/src/main/java/io/github/tonyzzx/gspan/Main.java @@ -65,7 +65,7 @@ private void initFromCmd() { options.addOption("a", "max-node", true, "Maximum number of nodes for each sub-graph"); options.addOption("r", "result", true, "File path of result"); options.addOption("t", "graph-type", true, "Type of graph: " + GRAPH_TYPE_DIRECTED + " / " + GRAPH_TYPE_UNDIRECTED + " (default: " + GRAPH_TYPE_DEFAULT + ")"); - options.addOption("s", "single-nodes", false, "Single nodes (nodes with same label are merged)"); + options.addOption("n", "single-nodes", false, "Single nodes (nodes with same label are merged)"); options.addOption("h", "help", false, "Help"); CommandLineParser parser = new DefaultParser(); @@ -93,7 +93,7 @@ private void initFromCmd() { System.exit(1); } directed = GRAPH_TYPE_DIRECTED.equals(graphType); - singleNodes = cmd.hasOption("s"); + singleNodes = cmd.hasOption('n'); } /*** diff --git a/src/main/java/io/github/tonyzzx/gspan/model/DFSCode.java b/src/main/java/io/github/tonyzzx/gspan/model/DFSCode.java index b7f5558..6418389 100644 --- a/src/main/java/io/github/tonyzzx/gspan/model/DFSCode.java +++ b/src/main/java/io/github/tonyzzx/gspan/model/DFSCode.java @@ -30,7 +30,7 @@ public void toGraph(Graph g, boolean singleNodes) { g.clear(); // Version 1: Multiple nodes for nodes with same label - if (singleNodes) { + if (!singleNodes) { for (DFS it : this) { g.resize(Math.max(it.from, it.to) + 1); @@ -44,9 +44,7 @@ public void toGraph(Graph g, boolean singleNodes) { g.get(it.to).push(it.to, it.from, it.eLabel); } } else { - g.clear(); // Version 2: One node for nodes with the same label - // Create label mapping Map labelMapping = new HashMap<>(); Map idMapping = new HashMap<>(); @@ -82,8 +80,6 @@ public void toGraph(Graph g, boolean singleNodes) { g.get(toId).push(toId, fromId, it.eLabel); } } - - g.buildEdge(); } diff --git a/target/gSpan.Java-1.2-jar-with-dependencies.jar b/target/gSpan.Java-1.2-jar-with-dependencies.jar index 731cf06ceed4b9654dc8370612bd9accce94b539..67226564f4667077878f290fdc37547b294b49dd 100644 GIT binary patch delta 5465 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 A!2kdN delta 5501 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