Merge branch 'anbangx/fullstack_genomix' into genomix/fullstack_genomix
diff --git a/genomix/genomix-data/src/main/java/edu/uci/ics/genomix/type/PositionListWritable.java b/genomix/genomix-data/src/main/java/edu/uci/ics/genomix/type/PositionListWritable.java
index e449760..d9a409d 100644
--- a/genomix/genomix-data/src/main/java/edu/uci/ics/genomix/type/PositionListWritable.java
+++ b/genomix/genomix-data/src/main/java/edu/uci/ics/genomix/type/PositionListWritable.java
@@ -139,6 +139,14 @@
protected int getCapacity() {
return maxStorageSize - offset;
}
+
+ public String printReadIdSet(){
+ String output = "";
+ for(int i = 0; i < valueCount - 1; i++)
+ output += getPosition(i).getReadId() + ",";
+ output += getPosition(valueCount - 1).getReadId();
+ return output;
+ }
protected void setCapacity(int new_cap) {
if (new_cap > getCapacity()) {
diff --git a/genomix/genomix-data/src/main/java/edu/uci/ics/genomix/type/VKmerBytesWritable.java b/genomix/genomix-data/src/main/java/edu/uci/ics/genomix/type/VKmerBytesWritable.java
index f6061fd..f9ebd15 100644
--- a/genomix/genomix-data/src/main/java/edu/uci/ics/genomix/type/VKmerBytesWritable.java
+++ b/genomix/genomix-data/src/main/java/edu/uci/ics/genomix/type/VKmerBytesWritable.java
@@ -639,6 +639,7 @@
KmerBytesWritable.appendOneByteAtPosition(preKmer.lettersInKmer - initialKmerSize + k - 4 + 1, cacheByte,
bytes, kmerStartOffset, bytesUsed);
clearLeadBit();
+ saveHeader(lettersInKmer);
}
public void mergeWithRRKmer(int kmerSize, KmerBytesWritable kmer) {
diff --git a/genomix/genomix-hadoop/data/webmap/SplitOnce.txt b/genomix/genomix-hadoop/data/webmap/SplitOnce.txt
new file mode 100644
index 0000000..d8e2b7e
--- /dev/null
+++ b/genomix/genomix-hadoop/data/webmap/SplitOnce.txt
@@ -0,0 +1,2 @@
+1 AATAG
+2 GCATA
diff --git a/genomix/genomix-hadoop/data/webmap/SplitRepeat.txt b/genomix/genomix-hadoop/data/webmap/SplitTwice.txt
similarity index 100%
rename from genomix/genomix-hadoop/data/webmap/SplitRepeat.txt
rename to genomix/genomix-hadoop/data/webmap/SplitTwice.txt
diff --git a/genomix/genomix-hadoop/data/webmap/lastesttest/HighSplitRepeat/HighSplitRepeat.txt b/genomix/genomix-hadoop/data/webmap/lastesttest/HighSplitRepeat/HighSplitRepeat.txt
new file mode 100644
index 0000000..eca0a13
--- /dev/null
+++ b/genomix/genomix-hadoop/data/webmap/lastesttest/HighSplitRepeat/HighSplitRepeat.txt
@@ -0,0 +1,3 @@
+1 AGCCACA
+2 GCACTTT
+3 CGCCGTC
diff --git a/genomix/genomix-hadoop/data/webmap/lastesttest/LowSplitRepeat/LowSplitRepeat.txt b/genomix/genomix-hadoop/data/webmap/lastesttest/LowSplitRepeat/LowSplitRepeat.txt
new file mode 100644
index 0000000..259fd80
--- /dev/null
+++ b/genomix/genomix-hadoop/data/webmap/lastesttest/LowSplitRepeat/LowSplitRepeat.txt
@@ -0,0 +1,3 @@
+1 AGCCA
+2 AGCCG
+3 GCCTT
diff --git a/genomix/genomix-hadoop/data/webmap/lastesttest/MidSplitRepeat/MidSplitRepeat.txt b/genomix/genomix-hadoop/data/webmap/lastesttest/MidSplitRepeat/MidSplitRepeat.txt
new file mode 100644
index 0000000..e934e54
--- /dev/null
+++ b/genomix/genomix-hadoop/data/webmap/lastesttest/MidSplitRepeat/MidSplitRepeat.txt
@@ -0,0 +1,3 @@
+1 AGCCA
+2 CGCCT
+3 GCCGG
diff --git a/genomix/genomix-hadoop/data/webmap/lastesttest/Tips1/Tips1.txt b/genomix/genomix-hadoop/data/webmap/lastesttest/Tips1/Tips1.txt
new file mode 100644
index 0000000..1e16d68
--- /dev/null
+++ b/genomix/genomix-hadoop/data/webmap/lastesttest/Tips1/Tips1.txt
@@ -0,0 +1,2 @@
+1 CAGCCA
+2 GCCGTA
diff --git a/genomix/genomix-hadoop/data/webmap/lastesttest/Tips2/Tips2.txt b/genomix/genomix-hadoop/data/webmap/lastesttest/Tips2/Tips2.txt
new file mode 100644
index 0000000..8109730
--- /dev/null
+++ b/genomix/genomix-hadoop/data/webmap/lastesttest/Tips2/Tips2.txt
@@ -0,0 +1,2 @@
+1 ACAGCG
+2 GGCGAA
diff --git a/genomix/genomix-hadoop/data/webmap/lastesttest/Tips3/Tips3.txt b/genomix/genomix-hadoop/data/webmap/lastesttest/Tips3/Tips3.txt
new file mode 100644
index 0000000..a672034
--- /dev/null
+++ b/genomix/genomix-hadoop/data/webmap/lastesttest/Tips3/Tips3.txt
@@ -0,0 +1,2 @@
+1 CAGCCT
+2 CAGCCA
diff --git a/genomix/genomix-hadoop/data/webmap/lastesttest/Tips4/Tips4.txt b/genomix/genomix-hadoop/data/webmap/lastesttest/Tips4/Tips4.txt
new file mode 100644
index 0000000..499e8e6
--- /dev/null
+++ b/genomix/genomix-hadoop/data/webmap/lastesttest/Tips4/Tips4.txt
@@ -0,0 +1,2 @@
+1 CAGGCA
+2 CAGGCC
diff --git a/genomix/genomix-hadoop/data/webmap/pathmerge_TestSet/2 b/genomix/genomix-hadoop/data/webmap/pathmerge_TestSet/2/2
similarity index 100%
rename from genomix/genomix-hadoop/data/webmap/pathmerge_TestSet/2
rename to genomix/genomix-hadoop/data/webmap/pathmerge_TestSet/2/2
diff --git a/genomix/genomix-hadoop/data/webmap/pathmerge_TestSet/3 b/genomix/genomix-hadoop/data/webmap/pathmerge_TestSet/3/3
similarity index 100%
rename from genomix/genomix-hadoop/data/webmap/pathmerge_TestSet/3
rename to genomix/genomix-hadoop/data/webmap/pathmerge_TestSet/3/3
diff --git a/genomix/genomix-hadoop/data/webmap/pathmerge_TestSet/4 b/genomix/genomix-hadoop/data/webmap/pathmerge_TestSet/4/4
similarity index 100%
rename from genomix/genomix-hadoop/data/webmap/pathmerge_TestSet/4
rename to genomix/genomix-hadoop/data/webmap/pathmerge_TestSet/4/4
diff --git a/genomix/genomix-hadoop/data/webmap/pathmerge_TestSet/5 b/genomix/genomix-hadoop/data/webmap/pathmerge_TestSet/5/5
similarity index 100%
rename from genomix/genomix-hadoop/data/webmap/pathmerge_TestSet/5
rename to genomix/genomix-hadoop/data/webmap/pathmerge_TestSet/5/5
diff --git a/genomix/genomix-hadoop/data/webmap/pathmerge_TestSet/6 b/genomix/genomix-hadoop/data/webmap/pathmerge_TestSet/6/6
similarity index 100%
rename from genomix/genomix-hadoop/data/webmap/pathmerge_TestSet/6
rename to genomix/genomix-hadoop/data/webmap/pathmerge_TestSet/6/6
diff --git a/genomix/genomix-hadoop/data/webmap/pathmerge_TestSet/7 b/genomix/genomix-hadoop/data/webmap/pathmerge_TestSet/7/7
similarity index 100%
rename from genomix/genomix-hadoop/data/webmap/pathmerge_TestSet/7
rename to genomix/genomix-hadoop/data/webmap/pathmerge_TestSet/7/7
diff --git a/genomix/genomix-hadoop/data/webmap/pathmerge_TestSet/8 b/genomix/genomix-hadoop/data/webmap/pathmerge_TestSet/8/8
similarity index 100%
rename from genomix/genomix-hadoop/data/webmap/pathmerge_TestSet/8
rename to genomix/genomix-hadoop/data/webmap/pathmerge_TestSet/8/8
diff --git a/genomix/genomix-hadoop/data/webmap/pathmerge_TestSet/9 b/genomix/genomix-hadoop/data/webmap/pathmerge_TestSet/9/9
similarity index 100%
rename from genomix/genomix-hadoop/data/webmap/pathmerge_TestSet/9
rename to genomix/genomix-hadoop/data/webmap/pathmerge_TestSet/9/9
diff --git a/genomix/genomix-hadoop/src/main/java/edu/uci/ics/genomix/hadoop/contrailgraphbuilding/GenomixDriver.java b/genomix/genomix-hadoop/src/main/java/edu/uci/ics/genomix/hadoop/contrailgraphbuilding/GenomixDriver.java
index 2553d16..d9e4876 100644
--- a/genomix/genomix-hadoop/src/main/java/edu/uci/ics/genomix/hadoop/contrailgraphbuilding/GenomixDriver.java
+++ b/genomix/genomix-hadoop/src/main/java/edu/uci/ics/genomix/hadoop/contrailgraphbuilding/GenomixDriver.java
@@ -34,15 +34,14 @@
@Option(name = "-kmer-size", usage = "the size of kmer", required = true)
public int sizeKmer;
- @Option(name = "-read-length", usage = "the length of read", required = true)
- public int readLength;
+// @Option(name = "-read-length", usage = "the length of read", required = true)
+// public int readLength;
}
- public void run(String inputPath, String outputPath, int numReducers, int sizeKmer, int readLength,
+ public void run(String inputPath, String outputPath, int numReducers, int sizeKmer,
boolean seqOutput, String defaultConfPath) throws IOException{
JobConf conf = new JobConf(GenomixDriver.class);
conf.setInt("sizeKmer", sizeKmer);
- conf.setInt("readLength", readLength);
if (defaultConfPath != null) {
conf.addResource(new Path(defaultConfPath));
}
@@ -79,7 +78,6 @@
CmdLineParser parser = new CmdLineParser(options);
parser.parseArgument(args);
GenomixDriver driver = new GenomixDriver();
- driver.run(options.inputPath, options.outputPath, options.numReducers, options.sizeKmer,
- options.readLength, true, null);
+ driver.run(options.inputPath, options.outputPath, options.numReducers, options.sizeKmer, true, null);
}
}
diff --git a/genomix/genomix-hadoop/src/main/java/edu/uci/ics/genomix/hadoop/contrailgraphbuilding/GenomixMapper.java b/genomix/genomix-hadoop/src/main/java/edu/uci/ics/genomix/hadoop/contrailgraphbuilding/GenomixMapper.java
index 6951e8b..39a7535 100644
--- a/genomix/genomix-hadoop/src/main/java/edu/uci/ics/genomix/hadoop/contrailgraphbuilding/GenomixMapper.java
+++ b/genomix/genomix-hadoop/src/main/java/edu/uci/ics/genomix/hadoop/contrailgraphbuilding/GenomixMapper.java
@@ -93,6 +93,8 @@
setNodeId(mateId, readID, 1);
//set value.edgeList
setEdgeListForNextKmer();
+ //set coverage = 1
+ outputNode.setAvgCoverage(1);
//output mapper result
setMapperOutput(output);
@@ -107,6 +109,8 @@
//set value.edgeList
setEdgeListForPreKmer();
setEdgeListForNextKmer();
+ //set coverage = 1
+ outputNode.setAvgCoverage(1);
//output mapper result
setMapperOutput(output);
}
@@ -119,6 +123,8 @@
setNodeId(mateId, readID, array.length - KMER_SIZE + 1);
//set value.edgeList
setEdgeListForPreKmer();
+ //set coverage = 1
+ outputNode.setAvgCoverage(1);
//output mapper result
setMapperOutput(output);
}
diff --git a/genomix/genomix-hadoop/src/main/java/edu/uci/ics/genomix/hadoop/contrailgraphbuilding/GenomixReducer.java b/genomix/genomix-hadoop/src/main/java/edu/uci/ics/genomix/hadoop/contrailgraphbuilding/GenomixReducer.java
index 6404f0d..e8e41c4 100644
--- a/genomix/genomix-hadoop/src/main/java/edu/uci/ics/genomix/hadoop/contrailgraphbuilding/GenomixReducer.java
+++ b/genomix/genomix-hadoop/src/main/java/edu/uci/ics/genomix/hadoop/contrailgraphbuilding/GenomixReducer.java
@@ -19,6 +19,7 @@
public static int KMER_SIZE;
private NodeWritable outputNode;
private NodeWritable tmpNode;
+ private float averageCoverage;
@Override
public void configure(JobConf job) {
@@ -32,15 +33,18 @@
OutputCollector<VKmerBytesWritable, NodeWritable> output,
Reporter reporter) throws IOException {
outputNode.reset();
+ averageCoverage = 0;
while (values.hasNext()) {
tmpNode.set(values.next());
- outputNode.getNodeIdList().appendList(tmpNode.getNodeIdList());
+ outputNode.getNodeIdList().unionUpdate(tmpNode.getNodeIdList());
outputNode.getFFList().unionUpdate(tmpNode.getFFList()); //appendList need to check if insert node exists
outputNode.getFRList().unionUpdate(tmpNode.getFRList());
outputNode.getRFList().unionUpdate(tmpNode.getRFList());
outputNode.getRRList().unionUpdate(tmpNode.getRRList());
+ averageCoverage += tmpNode.getAvgCoverage();
}
+ outputNode.setAvgCoverage(averageCoverage);
output.collect(key,outputNode);
}
diff --git a/genomix/genomix-hadoop/src/test/java/edu/uci/ics/genomix/hadoop/contrailgraphbuilding/GraphBuildingTestCase.java b/genomix/genomix-hadoop/src/test/java/edu/uci/ics/genomix/hadoop/contrailgraphbuilding/GraphBuildingTestCase.java
new file mode 100644
index 0000000..44f3168
--- /dev/null
+++ b/genomix/genomix-hadoop/src/test/java/edu/uci/ics/genomix/hadoop/contrailgraphbuilding/GraphBuildingTestCase.java
@@ -0,0 +1,70 @@
+package edu.uci.ics.genomix.hadoop.contrailgraphbuilding;
+
+import java.io.DataOutputStream;
+import java.io.File;
+import java.io.IOException;
+
+import junit.framework.TestCase;
+
+import org.apache.hadoop.fs.FileSystem;
+import org.apache.hadoop.fs.Path;
+import org.apache.hadoop.mapred.JobConf;
+import org.junit.Test;
+
+import edu.uci.ics.genomix.hadoop.graph.GenerateGraphViz;
+import edu.uci.ics.genomix.hadoop.pmcommon.HadoopMiniClusterTest;
+
+
+@SuppressWarnings({ "deprecation", "unused" })
+public class GraphBuildingTestCase extends TestCase{
+
+ private final String RESULT_PATH;
+ private final String HADOOP_CONF_PATH;
+ private final String HDFS_INPUTPATH;
+ private FileSystem dfs;
+ private JobConf conf;
+
+ private static final int COUNT_REDUCER = 1;
+ private final int SIZE_KMER;
+
+ public GraphBuildingTestCase(String resultFileDir, String hadoopConfPath,
+ String hdfsInputPath, int kmerSize, FileSystem dfs, JobConf conf){
+ super("test");
+ this.RESULT_PATH = resultFileDir;
+ this.HADOOP_CONF_PATH = hadoopConfPath;
+ this.HDFS_INPUTPATH = hdfsInputPath;
+ this.SIZE_KMER = kmerSize;
+ this.dfs = dfs;
+ this.conf = conf;
+ }
+
+ private void waitawhile() throws InterruptedException {
+ synchronized (this) {
+ this.wait(20);
+ }
+ }
+
+ @Test
+ public void test() throws Exception {
+ setUp();
+ TestMapKmerToNode();
+ tearDown();
+ waitawhile();
+ }
+
+ public void TestMapKmerToNode() throws Exception {
+ GenomixDriver driver = new GenomixDriver();
+ driver.run(HDFS_INPUTPATH, RESULT_PATH, COUNT_REDUCER, SIZE_KMER, true, HADOOP_CONF_PATH);
+ dumpResult();
+ }
+
+
+
+ private void dumpResult() throws Exception {
+// Path src = new Path(RESULT_PATH);
+// Path dest = new Path(RESULT_PATH);
+// dfs.copyToLocalFile(src, dest);
+ HadoopMiniClusterTest.copyResultsToLocal(RESULT_PATH, RESULT_PATH + "/test.txt", false, conf, true, dfs);
+ GenerateGraphViz.convertGraphBuildingOutputToGraphViz(RESULT_PATH + "/test.txt.bindir", RESULT_PATH + "/graphviz");
+ }
+}
diff --git a/genomix/genomix-hadoop/src/test/java/edu/uci/ics/genomix/hadoop/contrailgraphbuilding/GraphBuildingTestSuite.java b/genomix/genomix-hadoop/src/test/java/edu/uci/ics/genomix/hadoop/contrailgraphbuilding/GraphBuildingTestSuite.java
new file mode 100644
index 0000000..30e75cf
--- /dev/null
+++ b/genomix/genomix-hadoop/src/test/java/edu/uci/ics/genomix/hadoop/contrailgraphbuilding/GraphBuildingTestSuite.java
@@ -0,0 +1,129 @@
+package edu.uci.ics.genomix.hadoop.contrailgraphbuilding;
+
+import java.io.DataOutputStream;
+import java.io.File;
+import java.io.FileOutputStream;
+import java.io.IOException;
+
+import junit.framework.Test;
+import junit.framework.TestResult;
+import junit.framework.TestSuite;
+
+import org.apache.commons.io.FileUtils;
+import org.apache.hadoop.conf.Configuration;
+import org.apache.hadoop.fs.FileSystem;
+import org.apache.hadoop.fs.Path;
+import org.apache.hadoop.hdfs.MiniDFSCluster;
+import org.apache.hadoop.mapred.JobConf;
+import org.apache.hadoop.mapred.MiniMRCluster;
+
+
+@SuppressWarnings("deprecation")
+public class GraphBuildingTestSuite extends TestSuite{
+
+ private static int SIZE_KMER = 3;
+ public static final String PreFix = "data/webmap/lastesttest";
+ public static final String[] TestDir = { PreFix + File.separator
+// + "2", PreFix + File.separator
+// + "3", PreFix + File.separator
+// + "4", PreFix + File.separator
+// + "5", PreFix + File.separator
+// + "6", PreFix + File.separator
+// + "7", PreFix + File.separator
+// + "8", PreFix + File.separator
+// + "9"};
+ + "HighSplitRepeat", PreFix + File.separator
+ + "LowSplitRepeat", PreFix + File.separator
+ + "MidSplitRepeat", PreFix + File.separator
+ + "Tips1", PreFix + File.separator
+ + "Tips2", PreFix + File.separator
+ + "Tips3", PreFix + File.separator
+ + "Tips4"};
+
+ private static JobConf conf = new JobConf();
+ private static final String ACTUAL_RESULT_DIR = "actual";
+ private static final String HADOOP_CONF_PATH = ACTUAL_RESULT_DIR + File.separator + "conf.xml";
+ private static final String HDFS_INPUTPATH = "/webmap";
+
+ private MiniDFSCluster dfsCluster;
+ private MiniMRCluster mrCluster;
+ private static FileSystem dfs;
+
+ public void setUp() throws Exception{
+ FileUtils.forceMkdir(new File(ACTUAL_RESULT_DIR));
+ FileUtils.cleanDirectory(new File(ACTUAL_RESULT_DIR));
+ startHadoop();
+ }
+
+ private void startHadoop() throws IOException {
+ FileSystem lfs = FileSystem.getLocal(new Configuration());
+ lfs.delete(new Path("build"), true);
+ System.setProperty("hadoop.log.dir", "logs");
+ dfsCluster = new MiniDFSCluster(conf, 1, true, null);
+ dfs = dfsCluster.getFileSystem();
+ mrCluster = new MiniMRCluster(1, dfs.getUri().toString(), 1);
+
+ for (String testDir : TestDir) {
+ File src = new File(testDir);
+ Path dest = new Path(HDFS_INPUTPATH + File.separator + src.getName());
+ dfs.mkdirs(dest);
+ for (File f : src.listFiles()) {
+ dfs.copyFromLocalFile(new Path(f.getAbsolutePath()), dest);
+ }
+ }
+//
+// Path src = new Path(DATA_PATH);
+// Path dest = new Path(HDFS_PATH + "/");
+// dfs.mkdirs(dest);
+// dfs.copyFromLocalFile(src, dest);
+
+ DataOutputStream confOutput = new DataOutputStream(new FileOutputStream(new File(HADOOP_CONF_PATH)));
+ conf.writeXml(confOutput);
+ confOutput.flush();
+ confOutput.close();
+ }
+
+ public void tearDown() throws Exception {
+ cleanupHadoop();
+ }
+
+ private void cleanupHadoop() throws IOException {
+ mrCluster.shutdown();
+ dfsCluster.shutdown();
+ }
+
+ public static Test suite() throws Exception {
+ GraphBuildingTestSuite testSuite = new GraphBuildingTestSuite();
+ testSuite.setUp();
+// FileSystem dfs = FileSystem.get(testSuite.conf);
+ for (String testPathStr : TestDir) {
+ File testDir = new File(testPathStr);
+ String resultFileName = ACTUAL_RESULT_DIR + File.separator +
+ "bin" + File.separator + testDir.getName();
+ testSuite.addTest(new GraphBuildingTestCase(resultFileName, HADOOP_CONF_PATH,
+ HDFS_INPUTPATH + File.separator + testDir.getName(), SIZE_KMER, dfs, conf));
+ }
+ return testSuite;
+ }
+
+ /**
+ * Runs the tests and collects their result in a TestResult.
+ */
+ @Override
+ public void run(TestResult result) {
+ try {
+ int testCount = countTestCases();
+ for (int i = 0; i < testCount; i++) {
+ // cleanupStores();
+ Test each = this.testAt(i);
+ if (result.shouldStop())
+ break;
+ runTest(each, result);
+ }
+ tearDown();
+ } catch (Exception e) {
+ throw new IllegalStateException(e);
+ }
+ }
+
+}
diff --git a/genomix/genomix-hadoop/src/test/java/edu/uci/ics/genomix/hadoop/contrailgraphbuilding/GraphBuildingTest.java b/genomix/genomix-hadoop/src/test/java/edu/uci/ics/genomix/hadoop/contrailgraphbuilding/SingleGraphBuildingTest.java
similarity index 89%
rename from genomix/genomix-hadoop/src/test/java/edu/uci/ics/genomix/hadoop/contrailgraphbuilding/GraphBuildingTest.java
rename to genomix/genomix-hadoop/src/test/java/edu/uci/ics/genomix/hadoop/contrailgraphbuilding/SingleGraphBuildingTest.java
index 498a87d..5ee5593 100644
--- a/genomix/genomix-hadoop/src/test/java/edu/uci/ics/genomix/hadoop/contrailgraphbuilding/GraphBuildingTest.java
+++ b/genomix/genomix-hadoop/src/test/java/edu/uci/ics/genomix/hadoop/contrailgraphbuilding/SingleGraphBuildingTest.java
@@ -17,18 +17,17 @@
import edu.uci.ics.genomix.hadoop.pmcommon.HadoopMiniClusterTest;
@SuppressWarnings("deprecation")
-public class GraphBuildingTest {
+public class SingleGraphBuildingTest {
private JobConf conf = new JobConf();
private static final String ACTUAL_RESULT_DIR = "actual";
private static final String HADOOP_CONF_PATH = ACTUAL_RESULT_DIR + File.separator + "conf.xml";
- private static final String DATA_PATH = "data/webmap/pathmerge_TestSet/5";
+ private static final String DATA_PATH = "data/webmap/RemoveBridge.txt";
private static final String HDFS_PATH = "/webmap";
private static final String RESULT_PATH = "/result";
-// private static final int COUNT_REDUCER = 2;
+ private static final int COUNT_REDUCER = 1;
private static final int SIZE_KMER = 3;
- private static final int READ_LENGTH = 7;
private MiniDFSCluster dfsCluster;
private MiniMRCluster mrCluster;
@@ -45,7 +44,7 @@
public void TestMapKmerToNode() throws Exception {
GenomixDriver driver = new GenomixDriver();
- driver.run(HDFS_PATH, RESULT_PATH, 1, SIZE_KMER, READ_LENGTH, true, HADOOP_CONF_PATH);
+ driver.run(HDFS_PATH, RESULT_PATH, COUNT_REDUCER, SIZE_KMER, true, HADOOP_CONF_PATH);
dumpResult();
}
diff --git a/genomix/genomix-hadoop/src/test/java/edu/uci/ics/genomix/hadoop/pmcommon/HadoopMiniClusterTest.java b/genomix/genomix-hadoop/src/test/java/edu/uci/ics/genomix/hadoop/pmcommon/HadoopMiniClusterTest.java
index 0c92afe..3788a27 100644
--- a/genomix/genomix-hadoop/src/test/java/edu/uci/ics/genomix/hadoop/pmcommon/HadoopMiniClusterTest.java
+++ b/genomix/genomix-hadoop/src/test/java/edu/uci/ics/genomix/hadoop/pmcommon/HadoopMiniClusterTest.java
@@ -7,7 +7,6 @@
import java.io.FileWriter;
import java.io.IOException;
import java.util.ArrayList;
-import java.util.Arrays;
import org.apache.commons.io.FileUtils;
import org.apache.commons.lang3.ArrayUtils;
@@ -19,14 +18,10 @@
import org.apache.hadoop.hdfs.MiniDFSCluster;
import org.apache.hadoop.io.SequenceFile;
import org.apache.hadoop.io.Writable;
-import org.apache.hadoop.mapred.FileInputFormat;
-import org.apache.hadoop.mapred.FileOutputFormat;
import org.apache.hadoop.mapred.JobConf;
import org.apache.hadoop.mapred.MiniMRCluster;
import org.apache.hadoop.util.ReflectionUtils;
-import org.junit.After;
import org.junit.AfterClass;
-import org.junit.Before;
import org.junit.BeforeClass;
//import edu.uci.ics.genomix.hadoop.velvetgraphbuilding.GraphBuildingDriver;
diff --git a/genomix/genomix-pregelix/data/AddBridge/SimpleTest/part-00000 b/genomix/genomix-pregelix/data/AddBridge/SimpleTest/part-00000
index bc255a4..22508c2 100755
--- a/genomix/genomix-pregelix/data/AddBridge/SimpleTest/part-00000
+++ b/genomix/genomix-pregelix/data/AddBridge/SimpleTest/part-00000
Binary files differ
diff --git a/genomix/genomix-pregelix/data/LogAlgorithmForMergeGraph/txt/2 b/genomix/genomix-pregelix/data/LogAlgorithmForMergeGraph/txt/2
deleted file mode 100755
index f8bec75..0000000
--- a/genomix/genomix-pregelix/data/LogAlgorithmForMergeGraph/txt/2
+++ /dev/null
@@ -1,2 +0,0 @@
-ATA {[(1-2_1)] [] [] [] [] AATA}
-AAT {[(1-1_1)] [] [] [] [] AATA}
diff --git a/genomix/genomix-pregelix/data/LogAlgorithmForMergeGraph/txt/3 b/genomix/genomix-pregelix/data/LogAlgorithmForMergeGraph/txt/3
deleted file mode 100755
index 0f3d880..0000000
--- a/genomix/genomix-pregelix/data/LogAlgorithmForMergeGraph/txt/3
+++ /dev/null
@@ -1 +0,0 @@
-ATA {[(1-2_1)] [] [] [] [] AATAG}
diff --git a/genomix/genomix-pregelix/data/LogAlgorithmForMergeGraph/txt/4 b/genomix/genomix-pregelix/data/LogAlgorithmForMergeGraph/txt/4
deleted file mode 100755
index 91211fc..0000000
--- a/genomix/genomix-pregelix/data/LogAlgorithmForMergeGraph/txt/4
+++ /dev/null
@@ -1,2 +0,0 @@
-CTA {[(1-3_1)] [] [] [] [] TCTATT}
-ATA {[(1-2_1)] [] [] [] [] AATAGA}
diff --git a/genomix/genomix-pregelix/data/LogAlgorithmForMergeGraph/txt/5 b/genomix/genomix-pregelix/data/LogAlgorithmForMergeGraph/txt/5
deleted file mode 100755
index a2ae06f..0000000
--- a/genomix/genomix-pregelix/data/LogAlgorithmForMergeGraph/txt/5
+++ /dev/null
@@ -1,2 +0,0 @@
-ATA {[(1-2_1)] [] [] [] [] AATAGAA}
-AGA {[(1-4_1)] [] [] [] [] AATAGAA}
diff --git a/genomix/genomix-pregelix/data/LogAlgorithmForMergeGraph/txt/6 b/genomix/genomix-pregelix/data/LogAlgorithmForMergeGraph/txt/6
deleted file mode 100755
index c084bee..0000000
--- a/genomix/genomix-pregelix/data/LogAlgorithmForMergeGraph/txt/6
+++ /dev/null
@@ -1,2 +0,0 @@
-CTA {[(1-3_1)] [] [] [] [] GTTCTATT}
-AGA {[(1-4_1)] [] [] [] [] AATAGAAC}
diff --git a/genomix/genomix-pregelix/data/LogAlgorithmForMergeGraph/txt/7 b/genomix/genomix-pregelix/data/LogAlgorithmForMergeGraph/txt/7
deleted file mode 100755
index 30b31af..0000000
--- a/genomix/genomix-pregelix/data/LogAlgorithmForMergeGraph/txt/7
+++ /dev/null
@@ -1 +0,0 @@
-AGA {[(1-4_1)] [] [] [] [] AATAGAACT}
diff --git a/genomix/genomix-pregelix/data/LogAlgorithmForMergeGraph/txt/8 b/genomix/genomix-pregelix/data/LogAlgorithmForMergeGraph/txt/8
deleted file mode 100755
index 900707b..0000000
--- a/genomix/genomix-pregelix/data/LogAlgorithmForMergeGraph/txt/8
+++ /dev/null
@@ -1,2 +0,0 @@
-GAA {[(1-5_1)] [] [] [] [] AATAGAACTT}
-AGA {[(1-4_1)] [] [] [] [] AATAGAACTT}
diff --git a/genomix/genomix-pregelix/data/LogAlgorithmForMergeGraph/txt/9 b/genomix/genomix-pregelix/data/LogAlgorithmForMergeGraph/txt/9
deleted file mode 100755
index 862bc7c4..0000000
--- a/genomix/genomix-pregelix/data/LogAlgorithmForMergeGraph/txt/9
+++ /dev/null
@@ -1,2 +0,0 @@
-AGA {[(1-4_1)] [] [] [] [] AATAGAACTTA}
-AAC {[(1-6_1)] [] [] [] [] AATAGAACTTA}
diff --git a/genomix/genomix-pregelix/data/PathMergeTestSet/2/part-00000 b/genomix/genomix-pregelix/data/PathMergeTestSet/2/part-00000
index 6be54c5..dc6250b 100755
--- a/genomix/genomix-pregelix/data/PathMergeTestSet/2/part-00000
+++ b/genomix/genomix-pregelix/data/PathMergeTestSet/2/part-00000
Binary files differ
diff --git a/genomix/genomix-pregelix/data/PathMergeTestSet/3/part-00000 b/genomix/genomix-pregelix/data/PathMergeTestSet/3/part-00000
index 6f2b1d8..a672f70 100755
--- a/genomix/genomix-pregelix/data/PathMergeTestSet/3/part-00000
+++ b/genomix/genomix-pregelix/data/PathMergeTestSet/3/part-00000
Binary files differ
diff --git a/genomix/genomix-pregelix/data/PathMergeTestSet/4/part-00000 b/genomix/genomix-pregelix/data/PathMergeTestSet/4/part-00000
index 7fbe1a4..b47312f 100755
--- a/genomix/genomix-pregelix/data/PathMergeTestSet/4/part-00000
+++ b/genomix/genomix-pregelix/data/PathMergeTestSet/4/part-00000
Binary files differ
diff --git a/genomix/genomix-pregelix/data/PathMergeTestSet/5/part-00000 b/genomix/genomix-pregelix/data/PathMergeTestSet/5/part-00000
index d369b61..3b06e4c 100755
--- a/genomix/genomix-pregelix/data/PathMergeTestSet/5/part-00000
+++ b/genomix/genomix-pregelix/data/PathMergeTestSet/5/part-00000
Binary files differ
diff --git a/genomix/genomix-pregelix/data/PathMergeTestSet/6/part-00000 b/genomix/genomix-pregelix/data/PathMergeTestSet/6/part-00000
index 72b4009..330821c 100755
--- a/genomix/genomix-pregelix/data/PathMergeTestSet/6/part-00000
+++ b/genomix/genomix-pregelix/data/PathMergeTestSet/6/part-00000
Binary files differ
diff --git a/genomix/genomix-pregelix/data/PathMergeTestSet/7/part-00000 b/genomix/genomix-pregelix/data/PathMergeTestSet/7/part-00000
index 394c8c9..a7be3db 100755
--- a/genomix/genomix-pregelix/data/PathMergeTestSet/7/part-00000
+++ b/genomix/genomix-pregelix/data/PathMergeTestSet/7/part-00000
Binary files differ
diff --git a/genomix/genomix-pregelix/data/PathMergeTestSet/8/part-00000 b/genomix/genomix-pregelix/data/PathMergeTestSet/8/part-00000
index db653a7..50bf862 100755
--- a/genomix/genomix-pregelix/data/PathMergeTestSet/8/part-00000
+++ b/genomix/genomix-pregelix/data/PathMergeTestSet/8/part-00000
Binary files differ
diff --git a/genomix/genomix-pregelix/data/PathMergeTestSet/9/part-00000 b/genomix/genomix-pregelix/data/PathMergeTestSet/9/part-00000
index b7760c2..1b8024d 100755
--- a/genomix/genomix-pregelix/data/PathMergeTestSet/9/part-00000
+++ b/genomix/genomix-pregelix/data/PathMergeTestSet/9/part-00000
Binary files differ
diff --git a/genomix/genomix-pregelix/data/PathTestSet_bidirection/2/part-0 b/genomix/genomix-pregelix/data/PathTestSet_bidirection/2/part-0
deleted file mode 100755
index 36ad133..0000000
--- a/genomix/genomix-pregelix/data/PathTestSet_bidirection/2/part-0
+++ /dev/null
Binary files differ
diff --git a/genomix/genomix-pregelix/data/PathTestSet_bidirection/2/part-1 b/genomix/genomix-pregelix/data/PathTestSet_bidirection/2/part-1
deleted file mode 100755
index 6c0654f..0000000
--- a/genomix/genomix-pregelix/data/PathTestSet_bidirection/2/part-1
+++ /dev/null
Binary files differ
diff --git a/genomix/genomix-pregelix/data/PathTestSet_bidirection/2/part-2 b/genomix/genomix-pregelix/data/PathTestSet_bidirection/2/part-2
deleted file mode 100755
index 88537a5..0000000
--- a/genomix/genomix-pregelix/data/PathTestSet_bidirection/2/part-2
+++ /dev/null
Binary files differ
diff --git a/genomix/genomix-pregelix/data/PathTestSet_bidirection/2/part-3 b/genomix/genomix-pregelix/data/PathTestSet_bidirection/2/part-3
deleted file mode 100755
index 764a418..0000000
--- a/genomix/genomix-pregelix/data/PathTestSet_bidirection/2/part-3
+++ /dev/null
Binary files differ
diff --git a/genomix/genomix-pregelix/data/PathTestSet_bidirection/3/part-0 b/genomix/genomix-pregelix/data/PathTestSet_bidirection/3/part-0
deleted file mode 100755
index 11b0961..0000000
--- a/genomix/genomix-pregelix/data/PathTestSet_bidirection/3/part-0
+++ /dev/null
Binary files differ
diff --git a/genomix/genomix-pregelix/data/PathTestSet_bidirection/3/part-1 b/genomix/genomix-pregelix/data/PathTestSet_bidirection/3/part-1
deleted file mode 100755
index 4559127..0000000
--- a/genomix/genomix-pregelix/data/PathTestSet_bidirection/3/part-1
+++ /dev/null
Binary files differ
diff --git a/genomix/genomix-pregelix/data/PathTestSet_bidirection/3/part-2 b/genomix/genomix-pregelix/data/PathTestSet_bidirection/3/part-2
deleted file mode 100755
index 16d1cca..0000000
--- a/genomix/genomix-pregelix/data/PathTestSet_bidirection/3/part-2
+++ /dev/null
Binary files differ
diff --git a/genomix/genomix-pregelix/data/PathTestSet_bidirection/3/part-3 b/genomix/genomix-pregelix/data/PathTestSet_bidirection/3/part-3
deleted file mode 100755
index 113a00c..0000000
--- a/genomix/genomix-pregelix/data/PathTestSet_bidirection/3/part-3
+++ /dev/null
Binary files differ
diff --git a/genomix/genomix-pregelix/data/PathTestSet_bidirection/4/part-0 b/genomix/genomix-pregelix/data/PathTestSet_bidirection/4/part-0
deleted file mode 100755
index 8f9f87b..0000000
--- a/genomix/genomix-pregelix/data/PathTestSet_bidirection/4/part-0
+++ /dev/null
Binary files differ
diff --git a/genomix/genomix-pregelix/data/PathTestSet_bidirection/4/part-1 b/genomix/genomix-pregelix/data/PathTestSet_bidirection/4/part-1
deleted file mode 100755
index fbe9073..0000000
--- a/genomix/genomix-pregelix/data/PathTestSet_bidirection/4/part-1
+++ /dev/null
Binary files differ
diff --git a/genomix/genomix-pregelix/data/PathTestSet_bidirection/4/part-2 b/genomix/genomix-pregelix/data/PathTestSet_bidirection/4/part-2
deleted file mode 100755
index 4f2da5a..0000000
--- a/genomix/genomix-pregelix/data/PathTestSet_bidirection/4/part-2
+++ /dev/null
Binary files differ
diff --git a/genomix/genomix-pregelix/data/PathTestSet_bidirection/4/part-3 b/genomix/genomix-pregelix/data/PathTestSet_bidirection/4/part-3
deleted file mode 100755
index d91a22d..0000000
--- a/genomix/genomix-pregelix/data/PathTestSet_bidirection/4/part-3
+++ /dev/null
Binary files differ
diff --git a/genomix/genomix-pregelix/data/PathTestSet_bidirection/5/part-0 b/genomix/genomix-pregelix/data/PathTestSet_bidirection/5/part-0
deleted file mode 100755
index 789a4be..0000000
--- a/genomix/genomix-pregelix/data/PathTestSet_bidirection/5/part-0
+++ /dev/null
Binary files differ
diff --git a/genomix/genomix-pregelix/data/PathTestSet_bidirection/5/part-1 b/genomix/genomix-pregelix/data/PathTestSet_bidirection/5/part-1
deleted file mode 100755
index f2c8f05..0000000
--- a/genomix/genomix-pregelix/data/PathTestSet_bidirection/5/part-1
+++ /dev/null
Binary files differ
diff --git a/genomix/genomix-pregelix/data/PathTestSet_bidirection/5/part-2 b/genomix/genomix-pregelix/data/PathTestSet_bidirection/5/part-2
deleted file mode 100755
index adac13d..0000000
--- a/genomix/genomix-pregelix/data/PathTestSet_bidirection/5/part-2
+++ /dev/null
Binary files differ
diff --git a/genomix/genomix-pregelix/data/PathTestSet_bidirection/5/part-3 b/genomix/genomix-pregelix/data/PathTestSet_bidirection/5/part-3
deleted file mode 100755
index 048288c..0000000
--- a/genomix/genomix-pregelix/data/PathTestSet_bidirection/5/part-3
+++ /dev/null
Binary files differ
diff --git a/genomix/genomix-pregelix/data/PathTestSet_bidirection/6/part-0 b/genomix/genomix-pregelix/data/PathTestSet_bidirection/6/part-0
deleted file mode 100755
index 370d2f2..0000000
--- a/genomix/genomix-pregelix/data/PathTestSet_bidirection/6/part-0
+++ /dev/null
Binary files differ
diff --git a/genomix/genomix-pregelix/data/PathTestSet_bidirection/6/part-1 b/genomix/genomix-pregelix/data/PathTestSet_bidirection/6/part-1
deleted file mode 100755
index 7dab747..0000000
--- a/genomix/genomix-pregelix/data/PathTestSet_bidirection/6/part-1
+++ /dev/null
Binary files differ
diff --git a/genomix/genomix-pregelix/data/PathTestSet_bidirection/6/part-2 b/genomix/genomix-pregelix/data/PathTestSet_bidirection/6/part-2
deleted file mode 100755
index edc69bc..0000000
--- a/genomix/genomix-pregelix/data/PathTestSet_bidirection/6/part-2
+++ /dev/null
Binary files differ
diff --git a/genomix/genomix-pregelix/data/PathTestSet_bidirection/6/part-3 b/genomix/genomix-pregelix/data/PathTestSet_bidirection/6/part-3
deleted file mode 100755
index 8eefd1e..0000000
--- a/genomix/genomix-pregelix/data/PathTestSet_bidirection/6/part-3
+++ /dev/null
Binary files differ
diff --git a/genomix/genomix-pregelix/data/PathTestSet_bidirection/7/part-0 b/genomix/genomix-pregelix/data/PathTestSet_bidirection/7/part-0
deleted file mode 100755
index e2a4c17..0000000
--- a/genomix/genomix-pregelix/data/PathTestSet_bidirection/7/part-0
+++ /dev/null
Binary files differ
diff --git a/genomix/genomix-pregelix/data/PathTestSet_bidirection/7/part-1 b/genomix/genomix-pregelix/data/PathTestSet_bidirection/7/part-1
deleted file mode 100755
index 91e02e5..0000000
--- a/genomix/genomix-pregelix/data/PathTestSet_bidirection/7/part-1
+++ /dev/null
Binary files differ
diff --git a/genomix/genomix-pregelix/data/PathTestSet_bidirection/7/part-2 b/genomix/genomix-pregelix/data/PathTestSet_bidirection/7/part-2
deleted file mode 100755
index 91af60db..0000000
--- a/genomix/genomix-pregelix/data/PathTestSet_bidirection/7/part-2
+++ /dev/null
Binary files differ
diff --git a/genomix/genomix-pregelix/data/PathTestSet_bidirection/7/part-3 b/genomix/genomix-pregelix/data/PathTestSet_bidirection/7/part-3
deleted file mode 100755
index 3e751be..0000000
--- a/genomix/genomix-pregelix/data/PathTestSet_bidirection/7/part-3
+++ /dev/null
Binary files differ
diff --git a/genomix/genomix-pregelix/data/PathTestSet_bidirection/8/part-0 b/genomix/genomix-pregelix/data/PathTestSet_bidirection/8/part-0
deleted file mode 100755
index 491112d..0000000
--- a/genomix/genomix-pregelix/data/PathTestSet_bidirection/8/part-0
+++ /dev/null
Binary files differ
diff --git a/genomix/genomix-pregelix/data/PathTestSet_bidirection/8/part-1 b/genomix/genomix-pregelix/data/PathTestSet_bidirection/8/part-1
deleted file mode 100755
index 390b4c2..0000000
--- a/genomix/genomix-pregelix/data/PathTestSet_bidirection/8/part-1
+++ /dev/null
Binary files differ
diff --git a/genomix/genomix-pregelix/data/PathTestSet_bidirection/8/part-2 b/genomix/genomix-pregelix/data/PathTestSet_bidirection/8/part-2
deleted file mode 100755
index dc97793..0000000
--- a/genomix/genomix-pregelix/data/PathTestSet_bidirection/8/part-2
+++ /dev/null
Binary files differ
diff --git a/genomix/genomix-pregelix/data/PathTestSet_bidirection/8/part-3 b/genomix/genomix-pregelix/data/PathTestSet_bidirection/8/part-3
deleted file mode 100755
index e5979a7..0000000
--- a/genomix/genomix-pregelix/data/PathTestSet_bidirection/8/part-3
+++ /dev/null
Binary files differ
diff --git a/genomix/genomix-pregelix/data/PathTestSet_bidirection/9/part-0 b/genomix/genomix-pregelix/data/PathTestSet_bidirection/9/part-0
deleted file mode 100755
index f02ff98..0000000
--- a/genomix/genomix-pregelix/data/PathTestSet_bidirection/9/part-0
+++ /dev/null
Binary files differ
diff --git a/genomix/genomix-pregelix/data/PathTestSet_bidirection/9/part-1 b/genomix/genomix-pregelix/data/PathTestSet_bidirection/9/part-1
deleted file mode 100755
index db12a15..0000000
--- a/genomix/genomix-pregelix/data/PathTestSet_bidirection/9/part-1
+++ /dev/null
Binary files differ
diff --git a/genomix/genomix-pregelix/data/PathTestSet_bidirection/9/part-2 b/genomix/genomix-pregelix/data/PathTestSet_bidirection/9/part-2
deleted file mode 100755
index 4c0e89c..0000000
--- a/genomix/genomix-pregelix/data/PathTestSet_bidirection/9/part-2
+++ /dev/null
Binary files differ
diff --git a/genomix/genomix-pregelix/data/PathTestSet_bidirection/9/part-3 b/genomix/genomix-pregelix/data/PathTestSet_bidirection/9/part-3
deleted file mode 100755
index 5b39e54..0000000
--- a/genomix/genomix-pregelix/data/PathTestSet_bidirection/9/part-3
+++ /dev/null
Binary files differ
diff --git a/genomix/genomix-pregelix/data/PathTestSet_bidirection/singleread/part-0 b/genomix/genomix-pregelix/data/PathTestSet_bidirection/singleread/part-0
deleted file mode 100755
index 474b6b2..0000000
--- a/genomix/genomix-pregelix/data/PathTestSet_bidirection/singleread/part-0
+++ /dev/null
Binary files differ
diff --git a/genomix/genomix-pregelix/data/PathTestSet_bidirection/singleread/part-1 b/genomix/genomix-pregelix/data/PathTestSet_bidirection/singleread/part-1
deleted file mode 100755
index bc848f4..0000000
--- a/genomix/genomix-pregelix/data/PathTestSet_bidirection/singleread/part-1
+++ /dev/null
Binary files differ
diff --git a/genomix/genomix-pregelix/data/PathTestSet_bidirection/singleread/part-2 b/genomix/genomix-pregelix/data/PathTestSet_bidirection/singleread/part-2
deleted file mode 100755
index e3deba6..0000000
--- a/genomix/genomix-pregelix/data/PathTestSet_bidirection/singleread/part-2
+++ /dev/null
Binary files differ
diff --git a/genomix/genomix-pregelix/data/PathTestSet_bidirection/singleread/part-3 b/genomix/genomix-pregelix/data/PathTestSet_bidirection/singleread/part-3
deleted file mode 100755
index da5be93..0000000
--- a/genomix/genomix-pregelix/data/PathTestSet_bidirection/singleread/part-3
+++ /dev/null
Binary files differ
diff --git a/genomix/genomix-pregelix/data/PathTestSet_bidirection/tworeads3/part-0 b/genomix/genomix-pregelix/data/PathTestSet_bidirection/tworeads3/part-0
deleted file mode 100755
index 944816d..0000000
--- a/genomix/genomix-pregelix/data/PathTestSet_bidirection/tworeads3/part-0
+++ /dev/null
Binary files differ
diff --git a/genomix/genomix-pregelix/data/PathTestSet_bidirection/tworeads3/part-1 b/genomix/genomix-pregelix/data/PathTestSet_bidirection/tworeads3/part-1
deleted file mode 100755
index a3a79bc..0000000
--- a/genomix/genomix-pregelix/data/PathTestSet_bidirection/tworeads3/part-1
+++ /dev/null
Binary files differ
diff --git a/genomix/genomix-pregelix/data/PathTestSet_bidirection/tworeads3/part-2 b/genomix/genomix-pregelix/data/PathTestSet_bidirection/tworeads3/part-2
deleted file mode 100755
index 96021e0..0000000
--- a/genomix/genomix-pregelix/data/PathTestSet_bidirection/tworeads3/part-2
+++ /dev/null
Binary files differ
diff --git a/genomix/genomix-pregelix/data/PathTestSet_bidirection/tworeads3/part-3 b/genomix/genomix-pregelix/data/PathTestSet_bidirection/tworeads3/part-3
deleted file mode 100755
index f4c68e4..0000000
--- a/genomix/genomix-pregelix/data/PathTestSet_bidirection/tworeads3/part-3
+++ /dev/null
Binary files differ
diff --git a/genomix/genomix-pregelix/data/PathTestSet_bidirection/tworeads_6/part-0 b/genomix/genomix-pregelix/data/PathTestSet_bidirection/tworeads_6/part-0
deleted file mode 100755
index 9364723..0000000
--- a/genomix/genomix-pregelix/data/PathTestSet_bidirection/tworeads_6/part-0
+++ /dev/null
Binary files differ
diff --git a/genomix/genomix-pregelix/data/PathTestSet_bidirection/tworeads_6/part-1 b/genomix/genomix-pregelix/data/PathTestSet_bidirection/tworeads_6/part-1
deleted file mode 100755
index ee43a38..0000000
--- a/genomix/genomix-pregelix/data/PathTestSet_bidirection/tworeads_6/part-1
+++ /dev/null
Binary files differ
diff --git a/genomix/genomix-pregelix/data/PathTestSet_bidirection/tworeads_6/part-2 b/genomix/genomix-pregelix/data/PathTestSet_bidirection/tworeads_6/part-2
deleted file mode 100755
index 5983e27..0000000
--- a/genomix/genomix-pregelix/data/PathTestSet_bidirection/tworeads_6/part-2
+++ /dev/null
Binary files differ
diff --git a/genomix/genomix-pregelix/data/PathTestSet_bidirection/tworeads_6/part-3 b/genomix/genomix-pregelix/data/PathTestSet_bidirection/tworeads_6/part-3
deleted file mode 100755
index ffacdcf..0000000
--- a/genomix/genomix-pregelix/data/PathTestSet_bidirection/tworeads_6/part-3
+++ /dev/null
Binary files differ
diff --git a/genomix/genomix-pregelix/data/SplitRepeat/1/part-00000 b/genomix/genomix-pregelix/data/SplitRepeat/1/part-00000
deleted file mode 100755
index a983577..0000000
--- a/genomix/genomix-pregelix/data/SplitRepeat/1/part-00000
+++ /dev/null
Binary files differ
diff --git a/genomix/genomix-pregelix/data/SplitRepeat/AdjSplitRepeat/part-00000 b/genomix/genomix-pregelix/data/SplitRepeat/AdjSplitRepeat/part-00000
index a187c64..665db46 100755
--- a/genomix/genomix-pregelix/data/SplitRepeat/AdjSplitRepeat/part-00000
+++ b/genomix/genomix-pregelix/data/SplitRepeat/AdjSplitRepeat/part-00000
Binary files differ
diff --git a/genomix/genomix-pregelix/data/SplitRepeat/SimpleTest/part-00000 b/genomix/genomix-pregelix/data/SplitRepeat/SimpleTest/part-00000
deleted file mode 100755
index 4977247..0000000
--- a/genomix/genomix-pregelix/data/SplitRepeat/SimpleTest/part-00000
+++ /dev/null
Binary files differ
diff --git a/genomix/genomix-pregelix/data/SplitRepeat/SplitOnce/part-00000 b/genomix/genomix-pregelix/data/SplitRepeat/SplitOnce/part-00000
new file mode 100755
index 0000000..cd574bb
--- /dev/null
+++ b/genomix/genomix-pregelix/data/SplitRepeat/SplitOnce/part-00000
Binary files differ
diff --git a/genomix/genomix-pregelix/data/SplitRepeat/SplitTwice/part-00000 b/genomix/genomix-pregelix/data/SplitRepeat/SplitTwice/part-00000
new file mode 100755
index 0000000..e56b813
--- /dev/null
+++ b/genomix/genomix-pregelix/data/SplitRepeat/SplitTwice/part-00000
Binary files differ
diff --git a/genomix/genomix-pregelix/data/result/LogAlgorithmForMergeGraph/graphviz/2/result.ps b/genomix/genomix-pregelix/data/result/LogAlgorithmForMergeGraph/graphviz/2/result.ps
new file mode 100644
index 0000000..19f638a
--- /dev/null
+++ b/genomix/genomix-pregelix/data/result/LogAlgorithmForMergeGraph/graphviz/2/result.ps
@@ -0,0 +1,206 @@
+%!PS-Adobe-3.0
+%%Creator: graphviz version 2.26.3 (20100126.1600)
+%%Title: G
+%%Pages: (atend)
+%%BoundingBox: (atend)
+%%EndComments
+save
+%%BeginProlog
+/DotDict 200 dict def
+DotDict begin
+
+/setupLatin1 {
+mark
+/EncodingVector 256 array def
+ EncodingVector 0
+
+ISOLatin1Encoding 0 255 getinterval putinterval
+EncodingVector 45 /hyphen put
+
+% Set up ISO Latin 1 character encoding
+/starnetISO {
+ dup dup findfont dup length dict begin
+ { 1 index /FID ne { def }{ pop pop } ifelse
+ } forall
+ /Encoding EncodingVector def
+ currentdict end definefont
+} def
+/Times-Roman starnetISO def
+/Times-Italic starnetISO def
+/Times-Bold starnetISO def
+/Times-BoldItalic starnetISO def
+/Helvetica starnetISO def
+/Helvetica-Oblique starnetISO def
+/Helvetica-Bold starnetISO def
+/Helvetica-BoldOblique starnetISO def
+/Courier starnetISO def
+/Courier-Oblique starnetISO def
+/Courier-Bold starnetISO def
+/Courier-BoldOblique starnetISO def
+cleartomark
+} bind def
+
+%%BeginResource: procset graphviz 0 0
+/coord-font-family /Times-Roman def
+/default-font-family /Times-Roman def
+/coordfont coord-font-family findfont 8 scalefont def
+
+/InvScaleFactor 1.0 def
+/set_scale {
+ dup 1 exch div /InvScaleFactor exch def
+ scale
+} bind def
+
+% styles
+/solid { [] 0 setdash } bind def
+/dashed { [9 InvScaleFactor mul dup ] 0 setdash } bind def
+/dotted { [1 InvScaleFactor mul 6 InvScaleFactor mul] 0 setdash } bind def
+/invis {/fill {newpath} def /stroke {newpath} def /show {pop newpath} def} bind def
+/bold { 2 setlinewidth } bind def
+/filled { } bind def
+/unfilled { } bind def
+/rounded { } bind def
+/diagonals { } bind def
+
+% hooks for setting color
+/nodecolor { sethsbcolor } bind def
+/edgecolor { sethsbcolor } bind def
+/graphcolor { sethsbcolor } bind def
+/nopcolor {pop pop pop} bind def
+
+/beginpage { % i j npages
+ /npages exch def
+ /j exch def
+ /i exch def
+ /str 10 string def
+ npages 1 gt {
+ gsave
+ coordfont setfont
+ 0 0 moveto
+ (\() show i str cvs show (,) show j str cvs show (\)) show
+ grestore
+ } if
+} bind def
+
+/set_font {
+ findfont exch
+ scalefont setfont
+} def
+
+% draw text fitted to its expected width
+/alignedtext { % width text
+ /text exch def
+ /width exch def
+ gsave
+ width 0 gt {
+ [] 0 setdash
+ text stringwidth pop width exch sub text length div 0 text ashow
+ } if
+ grestore
+} def
+
+/boxprim { % xcorner ycorner xsize ysize
+ 4 2 roll
+ moveto
+ 2 copy
+ exch 0 rlineto
+ 0 exch rlineto
+ pop neg 0 rlineto
+ closepath
+} bind def
+
+/ellipse_path {
+ /ry exch def
+ /rx exch def
+ /y exch def
+ /x exch def
+ matrix currentmatrix
+ newpath
+ x y translate
+ rx ry scale
+ 0 0 1 0 360 arc
+ setmatrix
+} bind def
+
+/endpage { showpage } bind def
+/showpage { } def
+
+/layercolorseq
+ [ % layer color sequence - darkest to lightest
+ [0 0 0]
+ [.2 .8 .8]
+ [.4 .8 .8]
+ [.6 .8 .8]
+ [.8 .8 .8]
+ ]
+def
+
+/layerlen layercolorseq length def
+
+/setlayer {/maxlayer exch def /curlayer exch def
+ layercolorseq curlayer 1 sub layerlen mod get
+ aload pop sethsbcolor
+ /nodecolor {nopcolor} def
+ /edgecolor {nopcolor} def
+ /graphcolor {nopcolor} def
+} bind def
+
+/onlayer { curlayer ne {invis} if } def
+
+/onlayers {
+ /myupper exch def
+ /mylower exch def
+ curlayer mylower lt
+ curlayer myupper gt
+ or
+ {invis} if
+} def
+
+/curlayer 0 def
+
+%%EndResource
+%%EndProlog
+%%BeginSetup
+14 default-font-family set_font
+1 setmiterlimit
+% /arrowlength 10 def
+% /arrowwidth 5 def
+
+% make sure pdfmark is harmless for PS-interpreters other than Distiller
+/pdfmark where {pop} {userdict /pdfmark /cleartomark load put} ifelse
+% make '<<' and '>>' safe on PS Level 1 devices
+/languagelevel where {pop languagelevel}{1} ifelse
+2 lt {
+ userdict (<<) cvn ([) cvn load put
+ userdict (>>) cvn ([) cvn load put
+} if
+
+%%EndSetup
+setupLatin1
+%%Page: 1 1
+%%PageBoundingBox: 36 36 108 82
+%%PageOrientation: Portrait
+0 0 1 beginpage
+gsave
+36 36 72 46 boxprim clip newpath
+1 1 set_scale 0 rotate 40 41 translate
+% AAT
+gsave
+1 setlinewidth
+0 0 0 nodecolor
+32 19 31.82 18.38 ellipse_path stroke
+0 0 0 nodecolor
+14 /Times-Roman set_font
+17.5 15.4 moveto 29 (AAT) alignedtext
+grestore
+endpage
+showpage
+grestore
+%%PageTrailer
+%%EndPage: 1
+%%Trailer
+%%Pages: 1
+%%BoundingBox: 36 36 108 82
+end
+restore
+%%EOF
diff --git a/genomix/genomix-pregelix/data/result/LogAlgorithmForMergeGraph/graphviz/3/result.ps b/genomix/genomix-pregelix/data/result/LogAlgorithmForMergeGraph/graphviz/3/result.ps
new file mode 100644
index 0000000..aa8e89c
--- /dev/null
+++ b/genomix/genomix-pregelix/data/result/LogAlgorithmForMergeGraph/graphviz/3/result.ps
@@ -0,0 +1,206 @@
+%!PS-Adobe-3.0
+%%Creator: graphviz version 2.26.3 (20100126.1600)
+%%Title: G
+%%Pages: (atend)
+%%BoundingBox: (atend)
+%%EndComments
+save
+%%BeginProlog
+/DotDict 200 dict def
+DotDict begin
+
+/setupLatin1 {
+mark
+/EncodingVector 256 array def
+ EncodingVector 0
+
+ISOLatin1Encoding 0 255 getinterval putinterval
+EncodingVector 45 /hyphen put
+
+% Set up ISO Latin 1 character encoding
+/starnetISO {
+ dup dup findfont dup length dict begin
+ { 1 index /FID ne { def }{ pop pop } ifelse
+ } forall
+ /Encoding EncodingVector def
+ currentdict end definefont
+} def
+/Times-Roman starnetISO def
+/Times-Italic starnetISO def
+/Times-Bold starnetISO def
+/Times-BoldItalic starnetISO def
+/Helvetica starnetISO def
+/Helvetica-Oblique starnetISO def
+/Helvetica-Bold starnetISO def
+/Helvetica-BoldOblique starnetISO def
+/Courier starnetISO def
+/Courier-Oblique starnetISO def
+/Courier-Bold starnetISO def
+/Courier-BoldOblique starnetISO def
+cleartomark
+} bind def
+
+%%BeginResource: procset graphviz 0 0
+/coord-font-family /Times-Roman def
+/default-font-family /Times-Roman def
+/coordfont coord-font-family findfont 8 scalefont def
+
+/InvScaleFactor 1.0 def
+/set_scale {
+ dup 1 exch div /InvScaleFactor exch def
+ scale
+} bind def
+
+% styles
+/solid { [] 0 setdash } bind def
+/dashed { [9 InvScaleFactor mul dup ] 0 setdash } bind def
+/dotted { [1 InvScaleFactor mul 6 InvScaleFactor mul] 0 setdash } bind def
+/invis {/fill {newpath} def /stroke {newpath} def /show {pop newpath} def} bind def
+/bold { 2 setlinewidth } bind def
+/filled { } bind def
+/unfilled { } bind def
+/rounded { } bind def
+/diagonals { } bind def
+
+% hooks for setting color
+/nodecolor { sethsbcolor } bind def
+/edgecolor { sethsbcolor } bind def
+/graphcolor { sethsbcolor } bind def
+/nopcolor {pop pop pop} bind def
+
+/beginpage { % i j npages
+ /npages exch def
+ /j exch def
+ /i exch def
+ /str 10 string def
+ npages 1 gt {
+ gsave
+ coordfont setfont
+ 0 0 moveto
+ (\() show i str cvs show (,) show j str cvs show (\)) show
+ grestore
+ } if
+} bind def
+
+/set_font {
+ findfont exch
+ scalefont setfont
+} def
+
+% draw text fitted to its expected width
+/alignedtext { % width text
+ /text exch def
+ /width exch def
+ gsave
+ width 0 gt {
+ [] 0 setdash
+ text stringwidth pop width exch sub text length div 0 text ashow
+ } if
+ grestore
+} def
+
+/boxprim { % xcorner ycorner xsize ysize
+ 4 2 roll
+ moveto
+ 2 copy
+ exch 0 rlineto
+ 0 exch rlineto
+ pop neg 0 rlineto
+ closepath
+} bind def
+
+/ellipse_path {
+ /ry exch def
+ /rx exch def
+ /y exch def
+ /x exch def
+ matrix currentmatrix
+ newpath
+ x y translate
+ rx ry scale
+ 0 0 1 0 360 arc
+ setmatrix
+} bind def
+
+/endpage { showpage } bind def
+/showpage { } def
+
+/layercolorseq
+ [ % layer color sequence - darkest to lightest
+ [0 0 0]
+ [.2 .8 .8]
+ [.4 .8 .8]
+ [.6 .8 .8]
+ [.8 .8 .8]
+ ]
+def
+
+/layerlen layercolorseq length def
+
+/setlayer {/maxlayer exch def /curlayer exch def
+ layercolorseq curlayer 1 sub layerlen mod get
+ aload pop sethsbcolor
+ /nodecolor {nopcolor} def
+ /edgecolor {nopcolor} def
+ /graphcolor {nopcolor} def
+} bind def
+
+/onlayer { curlayer ne {invis} if } def
+
+/onlayers {
+ /myupper exch def
+ /mylower exch def
+ curlayer mylower lt
+ curlayer myupper gt
+ or
+ {invis} if
+} def
+
+/curlayer 0 def
+
+%%EndResource
+%%EndProlog
+%%BeginSetup
+14 default-font-family set_font
+1 setmiterlimit
+% /arrowlength 10 def
+% /arrowwidth 5 def
+
+% make sure pdfmark is harmless for PS-interpreters other than Distiller
+/pdfmark where {pop} {userdict /pdfmark /cleartomark load put} ifelse
+% make '<<' and '>>' safe on PS Level 1 devices
+/languagelevel where {pop languagelevel}{1} ifelse
+2 lt {
+ userdict (<<) cvn ([) cvn load put
+ userdict (>>) cvn ([) cvn load put
+} if
+
+%%EndSetup
+setupLatin1
+%%Page: 1 1
+%%PageBoundingBox: 36 36 106 82
+%%PageOrientation: Portrait
+0 0 1 beginpage
+gsave
+36 36 70 46 boxprim clip newpath
+1 1 set_scale 0 rotate 40 41 translate
+% ATA
+gsave
+1 setlinewidth
+0 0 0 nodecolor
+31 19 31.11 18.38 ellipse_path stroke
+0 0 0 nodecolor
+14 /Times-Roman set_font
+17 15.4 moveto 28 (ATA) alignedtext
+grestore
+endpage
+showpage
+grestore
+%%PageTrailer
+%%EndPage: 1
+%%Trailer
+%%Pages: 1
+%%BoundingBox: 36 36 106 82
+end
+restore
+%%EOF
diff --git a/genomix/genomix-pregelix/data/result/LogAlgorithmForMergeGraph/graphviz/4/result.ps b/genomix/genomix-pregelix/data/result/LogAlgorithmForMergeGraph/graphviz/4/result.ps
new file mode 100644
index 0000000..aa8e89c
--- /dev/null
+++ b/genomix/genomix-pregelix/data/result/LogAlgorithmForMergeGraph/graphviz/4/result.ps
@@ -0,0 +1,206 @@
+%!PS-Adobe-3.0
+%%Creator: graphviz version 2.26.3 (20100126.1600)
+%%Title: G
+%%Pages: (atend)
+%%BoundingBox: (atend)
+%%EndComments
+save
+%%BeginProlog
+/DotDict 200 dict def
+DotDict begin
+
+/setupLatin1 {
+mark
+/EncodingVector 256 array def
+ EncodingVector 0
+
+ISOLatin1Encoding 0 255 getinterval putinterval
+EncodingVector 45 /hyphen put
+
+% Set up ISO Latin 1 character encoding
+/starnetISO {
+ dup dup findfont dup length dict begin
+ { 1 index /FID ne { def }{ pop pop } ifelse
+ } forall
+ /Encoding EncodingVector def
+ currentdict end definefont
+} def
+/Times-Roman starnetISO def
+/Times-Italic starnetISO def
+/Times-Bold starnetISO def
+/Times-BoldItalic starnetISO def
+/Helvetica starnetISO def
+/Helvetica-Oblique starnetISO def
+/Helvetica-Bold starnetISO def
+/Helvetica-BoldOblique starnetISO def
+/Courier starnetISO def
+/Courier-Oblique starnetISO def
+/Courier-Bold starnetISO def
+/Courier-BoldOblique starnetISO def
+cleartomark
+} bind def
+
+%%BeginResource: procset graphviz 0 0
+/coord-font-family /Times-Roman def
+/default-font-family /Times-Roman def
+/coordfont coord-font-family findfont 8 scalefont def
+
+/InvScaleFactor 1.0 def
+/set_scale {
+ dup 1 exch div /InvScaleFactor exch def
+ scale
+} bind def
+
+% styles
+/solid { [] 0 setdash } bind def
+/dashed { [9 InvScaleFactor mul dup ] 0 setdash } bind def
+/dotted { [1 InvScaleFactor mul 6 InvScaleFactor mul] 0 setdash } bind def
+/invis {/fill {newpath} def /stroke {newpath} def /show {pop newpath} def} bind def
+/bold { 2 setlinewidth } bind def
+/filled { } bind def
+/unfilled { } bind def
+/rounded { } bind def
+/diagonals { } bind def
+
+% hooks for setting color
+/nodecolor { sethsbcolor } bind def
+/edgecolor { sethsbcolor } bind def
+/graphcolor { sethsbcolor } bind def
+/nopcolor {pop pop pop} bind def
+
+/beginpage { % i j npages
+ /npages exch def
+ /j exch def
+ /i exch def
+ /str 10 string def
+ npages 1 gt {
+ gsave
+ coordfont setfont
+ 0 0 moveto
+ (\() show i str cvs show (,) show j str cvs show (\)) show
+ grestore
+ } if
+} bind def
+
+/set_font {
+ findfont exch
+ scalefont setfont
+} def
+
+% draw text fitted to its expected width
+/alignedtext { % width text
+ /text exch def
+ /width exch def
+ gsave
+ width 0 gt {
+ [] 0 setdash
+ text stringwidth pop width exch sub text length div 0 text ashow
+ } if
+ grestore
+} def
+
+/boxprim { % xcorner ycorner xsize ysize
+ 4 2 roll
+ moveto
+ 2 copy
+ exch 0 rlineto
+ 0 exch rlineto
+ pop neg 0 rlineto
+ closepath
+} bind def
+
+/ellipse_path {
+ /ry exch def
+ /rx exch def
+ /y exch def
+ /x exch def
+ matrix currentmatrix
+ newpath
+ x y translate
+ rx ry scale
+ 0 0 1 0 360 arc
+ setmatrix
+} bind def
+
+/endpage { showpage } bind def
+/showpage { } def
+
+/layercolorseq
+ [ % layer color sequence - darkest to lightest
+ [0 0 0]
+ [.2 .8 .8]
+ [.4 .8 .8]
+ [.6 .8 .8]
+ [.8 .8 .8]
+ ]
+def
+
+/layerlen layercolorseq length def
+
+/setlayer {/maxlayer exch def /curlayer exch def
+ layercolorseq curlayer 1 sub layerlen mod get
+ aload pop sethsbcolor
+ /nodecolor {nopcolor} def
+ /edgecolor {nopcolor} def
+ /graphcolor {nopcolor} def
+} bind def
+
+/onlayer { curlayer ne {invis} if } def
+
+/onlayers {
+ /myupper exch def
+ /mylower exch def
+ curlayer mylower lt
+ curlayer myupper gt
+ or
+ {invis} if
+} def
+
+/curlayer 0 def
+
+%%EndResource
+%%EndProlog
+%%BeginSetup
+14 default-font-family set_font
+1 setmiterlimit
+% /arrowlength 10 def
+% /arrowwidth 5 def
+
+% make sure pdfmark is harmless for PS-interpreters other than Distiller
+/pdfmark where {pop} {userdict /pdfmark /cleartomark load put} ifelse
+% make '<<' and '>>' safe on PS Level 1 devices
+/languagelevel where {pop languagelevel}{1} ifelse
+2 lt {
+ userdict (<<) cvn ([) cvn load put
+ userdict (>>) cvn ([) cvn load put
+} if
+
+%%EndSetup
+setupLatin1
+%%Page: 1 1
+%%PageBoundingBox: 36 36 106 82
+%%PageOrientation: Portrait
+0 0 1 beginpage
+gsave
+36 36 70 46 boxprim clip newpath
+1 1 set_scale 0 rotate 40 41 translate
+% ATA
+gsave
+1 setlinewidth
+0 0 0 nodecolor
+31 19 31.11 18.38 ellipse_path stroke
+0 0 0 nodecolor
+14 /Times-Roman set_font
+17 15.4 moveto 28 (ATA) alignedtext
+grestore
+endpage
+showpage
+grestore
+%%PageTrailer
+%%EndPage: 1
+%%Trailer
+%%Pages: 1
+%%BoundingBox: 36 36 106 82
+end
+restore
+%%EOF
diff --git a/genomix/genomix-pregelix/data/result/LogAlgorithmForMergeGraph/graphviz/5/result.ps b/genomix/genomix-pregelix/data/result/LogAlgorithmForMergeGraph/graphviz/5/result.ps
new file mode 100644
index 0000000..f22a610
--- /dev/null
+++ b/genomix/genomix-pregelix/data/result/LogAlgorithmForMergeGraph/graphviz/5/result.ps
@@ -0,0 +1,206 @@
+%!PS-Adobe-3.0
+%%Creator: graphviz version 2.26.3 (20100126.1600)
+%%Title: G
+%%Pages: (atend)
+%%BoundingBox: (atend)
+%%EndComments
+save
+%%BeginProlog
+/DotDict 200 dict def
+DotDict begin
+
+/setupLatin1 {
+mark
+/EncodingVector 256 array def
+ EncodingVector 0
+
+ISOLatin1Encoding 0 255 getinterval putinterval
+EncodingVector 45 /hyphen put
+
+% Set up ISO Latin 1 character encoding
+/starnetISO {
+ dup dup findfont dup length dict begin
+ { 1 index /FID ne { def }{ pop pop } ifelse
+ } forall
+ /Encoding EncodingVector def
+ currentdict end definefont
+} def
+/Times-Roman starnetISO def
+/Times-Italic starnetISO def
+/Times-Bold starnetISO def
+/Times-BoldItalic starnetISO def
+/Helvetica starnetISO def
+/Helvetica-Oblique starnetISO def
+/Helvetica-Bold starnetISO def
+/Helvetica-BoldOblique starnetISO def
+/Courier starnetISO def
+/Courier-Oblique starnetISO def
+/Courier-Bold starnetISO def
+/Courier-BoldOblique starnetISO def
+cleartomark
+} bind def
+
+%%BeginResource: procset graphviz 0 0
+/coord-font-family /Times-Roman def
+/default-font-family /Times-Roman def
+/coordfont coord-font-family findfont 8 scalefont def
+
+/InvScaleFactor 1.0 def
+/set_scale {
+ dup 1 exch div /InvScaleFactor exch def
+ scale
+} bind def
+
+% styles
+/solid { [] 0 setdash } bind def
+/dashed { [9 InvScaleFactor mul dup ] 0 setdash } bind def
+/dotted { [1 InvScaleFactor mul 6 InvScaleFactor mul] 0 setdash } bind def
+/invis {/fill {newpath} def /stroke {newpath} def /show {pop newpath} def} bind def
+/bold { 2 setlinewidth } bind def
+/filled { } bind def
+/unfilled { } bind def
+/rounded { } bind def
+/diagonals { } bind def
+
+% hooks for setting color
+/nodecolor { sethsbcolor } bind def
+/edgecolor { sethsbcolor } bind def
+/graphcolor { sethsbcolor } bind def
+/nopcolor {pop pop pop} bind def
+
+/beginpage { % i j npages
+ /npages exch def
+ /j exch def
+ /i exch def
+ /str 10 string def
+ npages 1 gt {
+ gsave
+ coordfont setfont
+ 0 0 moveto
+ (\() show i str cvs show (,) show j str cvs show (\)) show
+ grestore
+ } if
+} bind def
+
+/set_font {
+ findfont exch
+ scalefont setfont
+} def
+
+% draw text fitted to its expected width
+/alignedtext { % width text
+ /text exch def
+ /width exch def
+ gsave
+ width 0 gt {
+ [] 0 setdash
+ text stringwidth pop width exch sub text length div 0 text ashow
+ } if
+ grestore
+} def
+
+/boxprim { % xcorner ycorner xsize ysize
+ 4 2 roll
+ moveto
+ 2 copy
+ exch 0 rlineto
+ 0 exch rlineto
+ pop neg 0 rlineto
+ closepath
+} bind def
+
+/ellipse_path {
+ /ry exch def
+ /rx exch def
+ /y exch def
+ /x exch def
+ matrix currentmatrix
+ newpath
+ x y translate
+ rx ry scale
+ 0 0 1 0 360 arc
+ setmatrix
+} bind def
+
+/endpage { showpage } bind def
+/showpage { } def
+
+/layercolorseq
+ [ % layer color sequence - darkest to lightest
+ [0 0 0]
+ [.2 .8 .8]
+ [.4 .8 .8]
+ [.6 .8 .8]
+ [.8 .8 .8]
+ ]
+def
+
+/layerlen layercolorseq length def
+
+/setlayer {/maxlayer exch def /curlayer exch def
+ layercolorseq curlayer 1 sub layerlen mod get
+ aload pop sethsbcolor
+ /nodecolor {nopcolor} def
+ /edgecolor {nopcolor} def
+ /graphcolor {nopcolor} def
+} bind def
+
+/onlayer { curlayer ne {invis} if } def
+
+/onlayers {
+ /myupper exch def
+ /mylower exch def
+ curlayer mylower lt
+ curlayer myupper gt
+ or
+ {invis} if
+} def
+
+/curlayer 0 def
+
+%%EndResource
+%%EndProlog
+%%BeginSetup
+14 default-font-family set_font
+1 setmiterlimit
+% /arrowlength 10 def
+% /arrowwidth 5 def
+
+% make sure pdfmark is harmless for PS-interpreters other than Distiller
+/pdfmark where {pop} {userdict /pdfmark /cleartomark load put} ifelse
+% make '<<' and '>>' safe on PS Level 1 devices
+/languagelevel where {pop languagelevel}{1} ifelse
+2 lt {
+ userdict (<<) cvn ([) cvn load put
+ userdict (>>) cvn ([) cvn load put
+} if
+
+%%EndSetup
+setupLatin1
+%%Page: 1 1
+%%PageBoundingBox: 36 36 110 82
+%%PageOrientation: Portrait
+0 0 1 beginpage
+gsave
+36 36 74 46 boxprim clip newpath
+1 1 set_scale 0 rotate 40 41 translate
+% AGA
+gsave
+1 setlinewidth
+0 0 0 nodecolor
+33 19 33.23 18.38 ellipse_path stroke
+0 0 0 nodecolor
+14 /Times-Roman set_font
+17.5 15.4 moveto 31 (AGA) alignedtext
+grestore
+endpage
+showpage
+grestore
+%%PageTrailer
+%%EndPage: 1
+%%Trailer
+%%Pages: 1
+%%BoundingBox: 36 36 110 82
+end
+restore
+%%EOF
diff --git a/genomix/genomix-pregelix/data/result/LogAlgorithmForMergeGraph/graphviz/6/result.ps b/genomix/genomix-pregelix/data/result/LogAlgorithmForMergeGraph/graphviz/6/result.ps
new file mode 100644
index 0000000..c293727
--- /dev/null
+++ b/genomix/genomix-pregelix/data/result/LogAlgorithmForMergeGraph/graphviz/6/result.ps
@@ -0,0 +1,206 @@
+%!PS-Adobe-3.0
+%%Creator: graphviz version 2.26.3 (20100126.1600)
+%%Title: G
+%%Pages: (atend)
+%%BoundingBox: (atend)
+%%EndComments
+save
+%%BeginProlog
+/DotDict 200 dict def
+DotDict begin
+
+/setupLatin1 {
+mark
+/EncodingVector 256 array def
+ EncodingVector 0
+
+ISOLatin1Encoding 0 255 getinterval putinterval
+EncodingVector 45 /hyphen put
+
+% Set up ISO Latin 1 character encoding
+/starnetISO {
+ dup dup findfont dup length dict begin
+ { 1 index /FID ne { def }{ pop pop } ifelse
+ } forall
+ /Encoding EncodingVector def
+ currentdict end definefont
+} def
+/Times-Roman starnetISO def
+/Times-Italic starnetISO def
+/Times-Bold starnetISO def
+/Times-BoldItalic starnetISO def
+/Helvetica starnetISO def
+/Helvetica-Oblique starnetISO def
+/Helvetica-Bold starnetISO def
+/Helvetica-BoldOblique starnetISO def
+/Courier starnetISO def
+/Courier-Oblique starnetISO def
+/Courier-Bold starnetISO def
+/Courier-BoldOblique starnetISO def
+cleartomark
+} bind def
+
+%%BeginResource: procset graphviz 0 0
+/coord-font-family /Times-Roman def
+/default-font-family /Times-Roman def
+/coordfont coord-font-family findfont 8 scalefont def
+
+/InvScaleFactor 1.0 def
+/set_scale {
+ dup 1 exch div /InvScaleFactor exch def
+ scale
+} bind def
+
+% styles
+/solid { [] 0 setdash } bind def
+/dashed { [9 InvScaleFactor mul dup ] 0 setdash } bind def
+/dotted { [1 InvScaleFactor mul 6 InvScaleFactor mul] 0 setdash } bind def
+/invis {/fill {newpath} def /stroke {newpath} def /show {pop newpath} def} bind def
+/bold { 2 setlinewidth } bind def
+/filled { } bind def
+/unfilled { } bind def
+/rounded { } bind def
+/diagonals { } bind def
+
+% hooks for setting color
+/nodecolor { sethsbcolor } bind def
+/edgecolor { sethsbcolor } bind def
+/graphcolor { sethsbcolor } bind def
+/nopcolor {pop pop pop} bind def
+
+/beginpage { % i j npages
+ /npages exch def
+ /j exch def
+ /i exch def
+ /str 10 string def
+ npages 1 gt {
+ gsave
+ coordfont setfont
+ 0 0 moveto
+ (\() show i str cvs show (,) show j str cvs show (\)) show
+ grestore
+ } if
+} bind def
+
+/set_font {
+ findfont exch
+ scalefont setfont
+} def
+
+% draw text fitted to its expected width
+/alignedtext { % width text
+ /text exch def
+ /width exch def
+ gsave
+ width 0 gt {
+ [] 0 setdash
+ text stringwidth pop width exch sub text length div 0 text ashow
+ } if
+ grestore
+} def
+
+/boxprim { % xcorner ycorner xsize ysize
+ 4 2 roll
+ moveto
+ 2 copy
+ exch 0 rlineto
+ 0 exch rlineto
+ pop neg 0 rlineto
+ closepath
+} bind def
+
+/ellipse_path {
+ /ry exch def
+ /rx exch def
+ /y exch def
+ /x exch def
+ matrix currentmatrix
+ newpath
+ x y translate
+ rx ry scale
+ 0 0 1 0 360 arc
+ setmatrix
+} bind def
+
+/endpage { showpage } bind def
+/showpage { } def
+
+/layercolorseq
+ [ % layer color sequence - darkest to lightest
+ [0 0 0]
+ [.2 .8 .8]
+ [.4 .8 .8]
+ [.6 .8 .8]
+ [.8 .8 .8]
+ ]
+def
+
+/layerlen layercolorseq length def
+
+/setlayer {/maxlayer exch def /curlayer exch def
+ layercolorseq curlayer 1 sub layerlen mod get
+ aload pop sethsbcolor
+ /nodecolor {nopcolor} def
+ /edgecolor {nopcolor} def
+ /graphcolor {nopcolor} def
+} bind def
+
+/onlayer { curlayer ne {invis} if } def
+
+/onlayers {
+ /myupper exch def
+ /mylower exch def
+ curlayer mylower lt
+ curlayer myupper gt
+ or
+ {invis} if
+} def
+
+/curlayer 0 def
+
+%%EndResource
+%%EndProlog
+%%BeginSetup
+14 default-font-family set_font
+1 setmiterlimit
+% /arrowlength 10 def
+% /arrowwidth 5 def
+
+% make sure pdfmark is harmless for PS-interpreters other than Distiller
+/pdfmark where {pop} {userdict /pdfmark /cleartomark load put} ifelse
+% make '<<' and '>>' safe on PS Level 1 devices
+/languagelevel where {pop languagelevel}{1} ifelse
+2 lt {
+ userdict (<<) cvn ([) cvn load put
+ userdict (>>) cvn ([) cvn load put
+} if
+
+%%EndSetup
+setupLatin1
+%%Page: 1 1
+%%PageBoundingBox: 36 36 106 82
+%%PageOrientation: Portrait
+0 0 1 beginpage
+gsave
+36 36 70 46 boxprim clip newpath
+1 1 set_scale 0 rotate 40 41 translate
+% CTA
+gsave
+1 setlinewidth
+0 0 0 nodecolor
+31 19 31.11 18.38 ellipse_path stroke
+0 0 0 nodecolor
+14 /Times-Roman set_font
+17 15.4 moveto 28 (CTA) alignedtext
+grestore
+endpage
+showpage
+grestore
+%%PageTrailer
+%%EndPage: 1
+%%Trailer
+%%Pages: 1
+%%BoundingBox: 36 36 106 82
+end
+restore
+%%EOF
diff --git a/genomix/genomix-pregelix/data/result/LogAlgorithmForMergeGraph/graphviz/7/result.ps b/genomix/genomix-pregelix/data/result/LogAlgorithmForMergeGraph/graphviz/7/result.ps
new file mode 100644
index 0000000..f22a610
--- /dev/null
+++ b/genomix/genomix-pregelix/data/result/LogAlgorithmForMergeGraph/graphviz/7/result.ps
@@ -0,0 +1,206 @@
+%!PS-Adobe-3.0
+%%Creator: graphviz version 2.26.3 (20100126.1600)
+%%Title: G
+%%Pages: (atend)
+%%BoundingBox: (atend)
+%%EndComments
+save
+%%BeginProlog
+/DotDict 200 dict def
+DotDict begin
+
+/setupLatin1 {
+mark
+/EncodingVector 256 array def
+ EncodingVector 0
+
+ISOLatin1Encoding 0 255 getinterval putinterval
+EncodingVector 45 /hyphen put
+
+% Set up ISO Latin 1 character encoding
+/starnetISO {
+ dup dup findfont dup length dict begin
+ { 1 index /FID ne { def }{ pop pop } ifelse
+ } forall
+ /Encoding EncodingVector def
+ currentdict end definefont
+} def
+/Times-Roman starnetISO def
+/Times-Italic starnetISO def
+/Times-Bold starnetISO def
+/Times-BoldItalic starnetISO def
+/Helvetica starnetISO def
+/Helvetica-Oblique starnetISO def
+/Helvetica-Bold starnetISO def
+/Helvetica-BoldOblique starnetISO def
+/Courier starnetISO def
+/Courier-Oblique starnetISO def
+/Courier-Bold starnetISO def
+/Courier-BoldOblique starnetISO def
+cleartomark
+} bind def
+
+%%BeginResource: procset graphviz 0 0
+/coord-font-family /Times-Roman def
+/default-font-family /Times-Roman def
+/coordfont coord-font-family findfont 8 scalefont def
+
+/InvScaleFactor 1.0 def
+/set_scale {
+ dup 1 exch div /InvScaleFactor exch def
+ scale
+} bind def
+
+% styles
+/solid { [] 0 setdash } bind def
+/dashed { [9 InvScaleFactor mul dup ] 0 setdash } bind def
+/dotted { [1 InvScaleFactor mul 6 InvScaleFactor mul] 0 setdash } bind def
+/invis {/fill {newpath} def /stroke {newpath} def /show {pop newpath} def} bind def
+/bold { 2 setlinewidth } bind def
+/filled { } bind def
+/unfilled { } bind def
+/rounded { } bind def
+/diagonals { } bind def
+
+% hooks for setting color
+/nodecolor { sethsbcolor } bind def
+/edgecolor { sethsbcolor } bind def
+/graphcolor { sethsbcolor } bind def
+/nopcolor {pop pop pop} bind def
+
+/beginpage { % i j npages
+ /npages exch def
+ /j exch def
+ /i exch def
+ /str 10 string def
+ npages 1 gt {
+ gsave
+ coordfont setfont
+ 0 0 moveto
+ (\() show i str cvs show (,) show j str cvs show (\)) show
+ grestore
+ } if
+} bind def
+
+/set_font {
+ findfont exch
+ scalefont setfont
+} def
+
+% draw text fitted to its expected width
+/alignedtext { % width text
+ /text exch def
+ /width exch def
+ gsave
+ width 0 gt {
+ [] 0 setdash
+ text stringwidth pop width exch sub text length div 0 text ashow
+ } if
+ grestore
+} def
+
+/boxprim { % xcorner ycorner xsize ysize
+ 4 2 roll
+ moveto
+ 2 copy
+ exch 0 rlineto
+ 0 exch rlineto
+ pop neg 0 rlineto
+ closepath
+} bind def
+
+/ellipse_path {
+ /ry exch def
+ /rx exch def
+ /y exch def
+ /x exch def
+ matrix currentmatrix
+ newpath
+ x y translate
+ rx ry scale
+ 0 0 1 0 360 arc
+ setmatrix
+} bind def
+
+/endpage { showpage } bind def
+/showpage { } def
+
+/layercolorseq
+ [ % layer color sequence - darkest to lightest
+ [0 0 0]
+ [.2 .8 .8]
+ [.4 .8 .8]
+ [.6 .8 .8]
+ [.8 .8 .8]
+ ]
+def
+
+/layerlen layercolorseq length def
+
+/setlayer {/maxlayer exch def /curlayer exch def
+ layercolorseq curlayer 1 sub layerlen mod get
+ aload pop sethsbcolor
+ /nodecolor {nopcolor} def
+ /edgecolor {nopcolor} def
+ /graphcolor {nopcolor} def
+} bind def
+
+/onlayer { curlayer ne {invis} if } def
+
+/onlayers {
+ /myupper exch def
+ /mylower exch def
+ curlayer mylower lt
+ curlayer myupper gt
+ or
+ {invis} if
+} def
+
+/curlayer 0 def
+
+%%EndResource
+%%EndProlog
+%%BeginSetup
+14 default-font-family set_font
+1 setmiterlimit
+% /arrowlength 10 def
+% /arrowwidth 5 def
+
+% make sure pdfmark is harmless for PS-interpreters other than Distiller
+/pdfmark where {pop} {userdict /pdfmark /cleartomark load put} ifelse
+% make '<<' and '>>' safe on PS Level 1 devices
+/languagelevel where {pop languagelevel}{1} ifelse
+2 lt {
+ userdict (<<) cvn ([) cvn load put
+ userdict (>>) cvn ([) cvn load put
+} if
+
+%%EndSetup
+setupLatin1
+%%Page: 1 1
+%%PageBoundingBox: 36 36 110 82
+%%PageOrientation: Portrait
+0 0 1 beginpage
+gsave
+36 36 74 46 boxprim clip newpath
+1 1 set_scale 0 rotate 40 41 translate
+% AGA
+gsave
+1 setlinewidth
+0 0 0 nodecolor
+33 19 33.23 18.38 ellipse_path stroke
+0 0 0 nodecolor
+14 /Times-Roman set_font
+17.5 15.4 moveto 31 (AGA) alignedtext
+grestore
+endpage
+showpage
+grestore
+%%PageTrailer
+%%EndPage: 1
+%%Trailer
+%%Pages: 1
+%%BoundingBox: 36 36 110 82
+end
+restore
+%%EOF
diff --git a/genomix/genomix-pregelix/data/result/LogAlgorithmForMergeGraph/graphviz/8/result.ps b/genomix/genomix-pregelix/data/result/LogAlgorithmForMergeGraph/graphviz/8/result.ps
new file mode 100644
index 0000000..f22a610
--- /dev/null
+++ b/genomix/genomix-pregelix/data/result/LogAlgorithmForMergeGraph/graphviz/8/result.ps
@@ -0,0 +1,206 @@
+%!PS-Adobe-3.0
+%%Creator: graphviz version 2.26.3 (20100126.1600)
+%%Title: G
+%%Pages: (atend)
+%%BoundingBox: (atend)
+%%EndComments
+save
+%%BeginProlog
+/DotDict 200 dict def
+DotDict begin
+
+/setupLatin1 {
+mark
+/EncodingVector 256 array def
+ EncodingVector 0
+
+ISOLatin1Encoding 0 255 getinterval putinterval
+EncodingVector 45 /hyphen put
+
+% Set up ISO Latin 1 character encoding
+/starnetISO {
+ dup dup findfont dup length dict begin
+ { 1 index /FID ne { def }{ pop pop } ifelse
+ } forall
+ /Encoding EncodingVector def
+ currentdict end definefont
+} def
+/Times-Roman starnetISO def
+/Times-Italic starnetISO def
+/Times-Bold starnetISO def
+/Times-BoldItalic starnetISO def
+/Helvetica starnetISO def
+/Helvetica-Oblique starnetISO def
+/Helvetica-Bold starnetISO def
+/Helvetica-BoldOblique starnetISO def
+/Courier starnetISO def
+/Courier-Oblique starnetISO def
+/Courier-Bold starnetISO def
+/Courier-BoldOblique starnetISO def
+cleartomark
+} bind def
+
+%%BeginResource: procset graphviz 0 0
+/coord-font-family /Times-Roman def
+/default-font-family /Times-Roman def
+/coordfont coord-font-family findfont 8 scalefont def
+
+/InvScaleFactor 1.0 def
+/set_scale {
+ dup 1 exch div /InvScaleFactor exch def
+ scale
+} bind def
+
+% styles
+/solid { [] 0 setdash } bind def
+/dashed { [9 InvScaleFactor mul dup ] 0 setdash } bind def
+/dotted { [1 InvScaleFactor mul 6 InvScaleFactor mul] 0 setdash } bind def
+/invis {/fill {newpath} def /stroke {newpath} def /show {pop newpath} def} bind def
+/bold { 2 setlinewidth } bind def
+/filled { } bind def
+/unfilled { } bind def
+/rounded { } bind def
+/diagonals { } bind def
+
+% hooks for setting color
+/nodecolor { sethsbcolor } bind def
+/edgecolor { sethsbcolor } bind def
+/graphcolor { sethsbcolor } bind def
+/nopcolor {pop pop pop} bind def
+
+/beginpage { % i j npages
+ /npages exch def
+ /j exch def
+ /i exch def
+ /str 10 string def
+ npages 1 gt {
+ gsave
+ coordfont setfont
+ 0 0 moveto
+ (\() show i str cvs show (,) show j str cvs show (\)) show
+ grestore
+ } if
+} bind def
+
+/set_font {
+ findfont exch
+ scalefont setfont
+} def
+
+% draw text fitted to its expected width
+/alignedtext { % width text
+ /text exch def
+ /width exch def
+ gsave
+ width 0 gt {
+ [] 0 setdash
+ text stringwidth pop width exch sub text length div 0 text ashow
+ } if
+ grestore
+} def
+
+/boxprim { % xcorner ycorner xsize ysize
+ 4 2 roll
+ moveto
+ 2 copy
+ exch 0 rlineto
+ 0 exch rlineto
+ pop neg 0 rlineto
+ closepath
+} bind def
+
+/ellipse_path {
+ /ry exch def
+ /rx exch def
+ /y exch def
+ /x exch def
+ matrix currentmatrix
+ newpath
+ x y translate
+ rx ry scale
+ 0 0 1 0 360 arc
+ setmatrix
+} bind def
+
+/endpage { showpage } bind def
+/showpage { } def
+
+/layercolorseq
+ [ % layer color sequence - darkest to lightest
+ [0 0 0]
+ [.2 .8 .8]
+ [.4 .8 .8]
+ [.6 .8 .8]
+ [.8 .8 .8]
+ ]
+def
+
+/layerlen layercolorseq length def
+
+/setlayer {/maxlayer exch def /curlayer exch def
+ layercolorseq curlayer 1 sub layerlen mod get
+ aload pop sethsbcolor
+ /nodecolor {nopcolor} def
+ /edgecolor {nopcolor} def
+ /graphcolor {nopcolor} def
+} bind def
+
+/onlayer { curlayer ne {invis} if } def
+
+/onlayers {
+ /myupper exch def
+ /mylower exch def
+ curlayer mylower lt
+ curlayer myupper gt
+ or
+ {invis} if
+} def
+
+/curlayer 0 def
+
+%%EndResource
+%%EndProlog
+%%BeginSetup
+14 default-font-family set_font
+1 setmiterlimit
+% /arrowlength 10 def
+% /arrowwidth 5 def
+
+% make sure pdfmark is harmless for PS-interpreters other than Distiller
+/pdfmark where {pop} {userdict /pdfmark /cleartomark load put} ifelse
+% make '<<' and '>>' safe on PS Level 1 devices
+/languagelevel where {pop languagelevel}{1} ifelse
+2 lt {
+ userdict (<<) cvn ([) cvn load put
+ userdict (>>) cvn ([) cvn load put
+} if
+
+%%EndSetup
+setupLatin1
+%%Page: 1 1
+%%PageBoundingBox: 36 36 110 82
+%%PageOrientation: Portrait
+0 0 1 beginpage
+gsave
+36 36 74 46 boxprim clip newpath
+1 1 set_scale 0 rotate 40 41 translate
+% AGA
+gsave
+1 setlinewidth
+0 0 0 nodecolor
+33 19 33.23 18.38 ellipse_path stroke
+0 0 0 nodecolor
+14 /Times-Roman set_font
+17.5 15.4 moveto 31 (AGA) alignedtext
+grestore
+endpage
+showpage
+grestore
+%%PageTrailer
+%%EndPage: 1
+%%Trailer
+%%Pages: 1
+%%BoundingBox: 36 36 110 82
+end
+restore
+%%EOF
diff --git a/genomix/genomix-pregelix/data/result/LogAlgorithmForMergeGraph/graphviz/9/result.ps b/genomix/genomix-pregelix/data/result/LogAlgorithmForMergeGraph/graphviz/9/result.ps
new file mode 100644
index 0000000..f22a610
--- /dev/null
+++ b/genomix/genomix-pregelix/data/result/LogAlgorithmForMergeGraph/graphviz/9/result.ps
@@ -0,0 +1,206 @@
+%!PS-Adobe-3.0
+%%Creator: graphviz version 2.26.3 (20100126.1600)
+%%Title: G
+%%Pages: (atend)
+%%BoundingBox: (atend)
+%%EndComments
+save
+%%BeginProlog
+/DotDict 200 dict def
+DotDict begin
+
+/setupLatin1 {
+mark
+/EncodingVector 256 array def
+ EncodingVector 0
+
+ISOLatin1Encoding 0 255 getinterval putinterval
+EncodingVector 45 /hyphen put
+
+% Set up ISO Latin 1 character encoding
+/starnetISO {
+ dup dup findfont dup length dict begin
+ { 1 index /FID ne { def }{ pop pop } ifelse
+ } forall
+ /Encoding EncodingVector def
+ currentdict end definefont
+} def
+/Times-Roman starnetISO def
+/Times-Italic starnetISO def
+/Times-Bold starnetISO def
+/Times-BoldItalic starnetISO def
+/Helvetica starnetISO def
+/Helvetica-Oblique starnetISO def
+/Helvetica-Bold starnetISO def
+/Helvetica-BoldOblique starnetISO def
+/Courier starnetISO def
+/Courier-Oblique starnetISO def
+/Courier-Bold starnetISO def
+/Courier-BoldOblique starnetISO def
+cleartomark
+} bind def
+
+%%BeginResource: procset graphviz 0 0
+/coord-font-family /Times-Roman def
+/default-font-family /Times-Roman def
+/coordfont coord-font-family findfont 8 scalefont def
+
+/InvScaleFactor 1.0 def
+/set_scale {
+ dup 1 exch div /InvScaleFactor exch def
+ scale
+} bind def
+
+% styles
+/solid { [] 0 setdash } bind def
+/dashed { [9 InvScaleFactor mul dup ] 0 setdash } bind def
+/dotted { [1 InvScaleFactor mul 6 InvScaleFactor mul] 0 setdash } bind def
+/invis {/fill {newpath} def /stroke {newpath} def /show {pop newpath} def} bind def
+/bold { 2 setlinewidth } bind def
+/filled { } bind def
+/unfilled { } bind def
+/rounded { } bind def
+/diagonals { } bind def
+
+% hooks for setting color
+/nodecolor { sethsbcolor } bind def
+/edgecolor { sethsbcolor } bind def
+/graphcolor { sethsbcolor } bind def
+/nopcolor {pop pop pop} bind def
+
+/beginpage { % i j npages
+ /npages exch def
+ /j exch def
+ /i exch def
+ /str 10 string def
+ npages 1 gt {
+ gsave
+ coordfont setfont
+ 0 0 moveto
+ (\() show i str cvs show (,) show j str cvs show (\)) show
+ grestore
+ } if
+} bind def
+
+/set_font {
+ findfont exch
+ scalefont setfont
+} def
+
+% draw text fitted to its expected width
+/alignedtext { % width text
+ /text exch def
+ /width exch def
+ gsave
+ width 0 gt {
+ [] 0 setdash
+ text stringwidth pop width exch sub text length div 0 text ashow
+ } if
+ grestore
+} def
+
+/boxprim { % xcorner ycorner xsize ysize
+ 4 2 roll
+ moveto
+ 2 copy
+ exch 0 rlineto
+ 0 exch rlineto
+ pop neg 0 rlineto
+ closepath
+} bind def
+
+/ellipse_path {
+ /ry exch def
+ /rx exch def
+ /y exch def
+ /x exch def
+ matrix currentmatrix
+ newpath
+ x y translate
+ rx ry scale
+ 0 0 1 0 360 arc
+ setmatrix
+} bind def
+
+/endpage { showpage } bind def
+/showpage { } def
+
+/layercolorseq
+ [ % layer color sequence - darkest to lightest
+ [0 0 0]
+ [.2 .8 .8]
+ [.4 .8 .8]
+ [.6 .8 .8]
+ [.8 .8 .8]
+ ]
+def
+
+/layerlen layercolorseq length def
+
+/setlayer {/maxlayer exch def /curlayer exch def
+ layercolorseq curlayer 1 sub layerlen mod get
+ aload pop sethsbcolor
+ /nodecolor {nopcolor} def
+ /edgecolor {nopcolor} def
+ /graphcolor {nopcolor} def
+} bind def
+
+/onlayer { curlayer ne {invis} if } def
+
+/onlayers {
+ /myupper exch def
+ /mylower exch def
+ curlayer mylower lt
+ curlayer myupper gt
+ or
+ {invis} if
+} def
+
+/curlayer 0 def
+
+%%EndResource
+%%EndProlog
+%%BeginSetup
+14 default-font-family set_font
+1 setmiterlimit
+% /arrowlength 10 def
+% /arrowwidth 5 def
+
+% make sure pdfmark is harmless for PS-interpreters other than Distiller
+/pdfmark where {pop} {userdict /pdfmark /cleartomark load put} ifelse
+% make '<<' and '>>' safe on PS Level 1 devices
+/languagelevel where {pop languagelevel}{1} ifelse
+2 lt {
+ userdict (<<) cvn ([) cvn load put
+ userdict (>>) cvn ([) cvn load put
+} if
+
+%%EndSetup
+setupLatin1
+%%Page: 1 1
+%%PageBoundingBox: 36 36 110 82
+%%PageOrientation: Portrait
+0 0 1 beginpage
+gsave
+36 36 74 46 boxprim clip newpath
+1 1 set_scale 0 rotate 40 41 translate
+% AGA
+gsave
+1 setlinewidth
+0 0 0 nodecolor
+33 19 33.23 18.38 ellipse_path stroke
+0 0 0 nodecolor
+14 /Times-Roman set_font
+17.5 15.4 moveto 31 (AGA) alignedtext
+grestore
+endpage
+showpage
+grestore
+%%PageTrailer
+%%EndPage: 1
+%%Trailer
+%%Pages: 1
+%%BoundingBox: 36 36 110 82
+end
+restore
+%%EOF
diff --git a/genomix/genomix-pregelix/data/LogAlgorithmForMergeGraph/txt/.2.crc b/genomix/genomix-pregelix/data/result/LogAlgorithmForMergeGraph/txt/.2.crc
similarity index 100%
rename from genomix/genomix-pregelix/data/LogAlgorithmForMergeGraph/txt/.2.crc
rename to genomix/genomix-pregelix/data/result/LogAlgorithmForMergeGraph/txt/.2.crc
diff --git a/genomix/genomix-pregelix/data/LogAlgorithmForMergeGraph/txt/.3.crc b/genomix/genomix-pregelix/data/result/LogAlgorithmForMergeGraph/txt/.3.crc
similarity index 100%
rename from genomix/genomix-pregelix/data/LogAlgorithmForMergeGraph/txt/.3.crc
rename to genomix/genomix-pregelix/data/result/LogAlgorithmForMergeGraph/txt/.3.crc
diff --git a/genomix/genomix-pregelix/data/LogAlgorithmForMergeGraph/txt/.4.crc b/genomix/genomix-pregelix/data/result/LogAlgorithmForMergeGraph/txt/.4.crc
similarity index 100%
rename from genomix/genomix-pregelix/data/LogAlgorithmForMergeGraph/txt/.4.crc
rename to genomix/genomix-pregelix/data/result/LogAlgorithmForMergeGraph/txt/.4.crc
diff --git a/genomix/genomix-pregelix/data/LogAlgorithmForMergeGraph/txt/.5.crc b/genomix/genomix-pregelix/data/result/LogAlgorithmForMergeGraph/txt/.5.crc
similarity index 100%
rename from genomix/genomix-pregelix/data/LogAlgorithmForMergeGraph/txt/.5.crc
rename to genomix/genomix-pregelix/data/result/LogAlgorithmForMergeGraph/txt/.5.crc
diff --git a/genomix/genomix-pregelix/data/LogAlgorithmForMergeGraph/txt/.6.crc b/genomix/genomix-pregelix/data/result/LogAlgorithmForMergeGraph/txt/.6.crc
similarity index 100%
rename from genomix/genomix-pregelix/data/LogAlgorithmForMergeGraph/txt/.6.crc
rename to genomix/genomix-pregelix/data/result/LogAlgorithmForMergeGraph/txt/.6.crc
diff --git a/genomix/genomix-pregelix/data/LogAlgorithmForMergeGraph/txt/.7.crc b/genomix/genomix-pregelix/data/result/LogAlgorithmForMergeGraph/txt/.7.crc
similarity index 100%
rename from genomix/genomix-pregelix/data/LogAlgorithmForMergeGraph/txt/.7.crc
rename to genomix/genomix-pregelix/data/result/LogAlgorithmForMergeGraph/txt/.7.crc
diff --git a/genomix/genomix-pregelix/data/LogAlgorithmForMergeGraph/txt/.8.crc b/genomix/genomix-pregelix/data/result/LogAlgorithmForMergeGraph/txt/.8.crc
similarity index 100%
rename from genomix/genomix-pregelix/data/LogAlgorithmForMergeGraph/txt/.8.crc
rename to genomix/genomix-pregelix/data/result/LogAlgorithmForMergeGraph/txt/.8.crc
diff --git a/genomix/genomix-pregelix/data/LogAlgorithmForMergeGraph/txt/.9.crc b/genomix/genomix-pregelix/data/result/LogAlgorithmForMergeGraph/txt/.9.crc
similarity index 100%
rename from genomix/genomix-pregelix/data/LogAlgorithmForMergeGraph/txt/.9.crc
rename to genomix/genomix-pregelix/data/result/LogAlgorithmForMergeGraph/txt/.9.crc
diff --git a/genomix/genomix-pregelix/data/result/LogAlgorithmForMergeGraph/txt/2 b/genomix/genomix-pregelix/data/result/LogAlgorithmForMergeGraph/txt/2
new file mode 100755
index 0000000..f00dc00
--- /dev/null
+++ b/genomix/genomix-pregelix/data/result/LogAlgorithmForMergeGraph/txt/2
@@ -0,0 +1 @@
+AAT {[(1-1_0)] [] [] [] [] AATA}
diff --git a/genomix/genomix-pregelix/data/result/LogAlgorithmForMergeGraph/txt/3 b/genomix/genomix-pregelix/data/result/LogAlgorithmForMergeGraph/txt/3
new file mode 100755
index 0000000..b32ce12
--- /dev/null
+++ b/genomix/genomix-pregelix/data/result/LogAlgorithmForMergeGraph/txt/3
@@ -0,0 +1 @@
+ATA {[(1-2_0)] [] [] [] [] AATAG}
diff --git a/genomix/genomix-pregelix/data/result/LogAlgorithmForMergeGraph/txt/4 b/genomix/genomix-pregelix/data/result/LogAlgorithmForMergeGraph/txt/4
new file mode 100755
index 0000000..7d695cd
--- /dev/null
+++ b/genomix/genomix-pregelix/data/result/LogAlgorithmForMergeGraph/txt/4
@@ -0,0 +1 @@
+ATA {[(1-2_0)] [] [] [] [] AATAGA}
diff --git a/genomix/genomix-pregelix/data/result/LogAlgorithmForMergeGraph/txt/5 b/genomix/genomix-pregelix/data/result/LogAlgorithmForMergeGraph/txt/5
new file mode 100755
index 0000000..dd2c522
--- /dev/null
+++ b/genomix/genomix-pregelix/data/result/LogAlgorithmForMergeGraph/txt/5
@@ -0,0 +1 @@
+AGA {[(1-4_0)] [] [] [] [] AATAGAA}
diff --git a/genomix/genomix-pregelix/data/result/LogAlgorithmForMergeGraph/txt/6 b/genomix/genomix-pregelix/data/result/LogAlgorithmForMergeGraph/txt/6
new file mode 100755
index 0000000..9daadca
--- /dev/null
+++ b/genomix/genomix-pregelix/data/result/LogAlgorithmForMergeGraph/txt/6
@@ -0,0 +1 @@
+CTA {[(1-3_0)] [] [] [] [] GTTCTATT}
diff --git a/genomix/genomix-pregelix/data/result/LogAlgorithmForMergeGraph/txt/7 b/genomix/genomix-pregelix/data/result/LogAlgorithmForMergeGraph/txt/7
new file mode 100755
index 0000000..72c2cd5
--- /dev/null
+++ b/genomix/genomix-pregelix/data/result/LogAlgorithmForMergeGraph/txt/7
@@ -0,0 +1 @@
+AGA {[(1-4_0)] [] [] [] [] AATAGAACT}
diff --git a/genomix/genomix-pregelix/data/result/LogAlgorithmForMergeGraph/txt/8 b/genomix/genomix-pregelix/data/result/LogAlgorithmForMergeGraph/txt/8
new file mode 100755
index 0000000..6ee8b4f
--- /dev/null
+++ b/genomix/genomix-pregelix/data/result/LogAlgorithmForMergeGraph/txt/8
@@ -0,0 +1 @@
+AGA {[(1-4_0)] [] [] [] [] AATAGAACTT}
diff --git a/genomix/genomix-pregelix/data/result/LogAlgorithmForMergeGraph/txt/9 b/genomix/genomix-pregelix/data/result/LogAlgorithmForMergeGraph/txt/9
new file mode 100755
index 0000000..1225238
--- /dev/null
+++ b/genomix/genomix-pregelix/data/result/LogAlgorithmForMergeGraph/txt/9
@@ -0,0 +1 @@
+AGA {[(1-4_0)] [] [] [] [] AATAGAACTTA}
diff --git a/genomix/genomix-pregelix/data/result/P4ForMergeGraph/graphviz/2/result.ps b/genomix/genomix-pregelix/data/result/P4ForMergeGraph/graphviz/2/result.ps
new file mode 100644
index 0000000..19f638a
--- /dev/null
+++ b/genomix/genomix-pregelix/data/result/P4ForMergeGraph/graphviz/2/result.ps
@@ -0,0 +1,206 @@
+%!PS-Adobe-3.0
+%%Creator: graphviz version 2.26.3 (20100126.1600)
+%%Title: G
+%%Pages: (atend)
+%%BoundingBox: (atend)
+%%EndComments
+save
+%%BeginProlog
+/DotDict 200 dict def
+DotDict begin
+
+/setupLatin1 {
+mark
+/EncodingVector 256 array def
+ EncodingVector 0
+
+ISOLatin1Encoding 0 255 getinterval putinterval
+EncodingVector 45 /hyphen put
+
+% Set up ISO Latin 1 character encoding
+/starnetISO {
+ dup dup findfont dup length dict begin
+ { 1 index /FID ne { def }{ pop pop } ifelse
+ } forall
+ /Encoding EncodingVector def
+ currentdict end definefont
+} def
+/Times-Roman starnetISO def
+/Times-Italic starnetISO def
+/Times-Bold starnetISO def
+/Times-BoldItalic starnetISO def
+/Helvetica starnetISO def
+/Helvetica-Oblique starnetISO def
+/Helvetica-Bold starnetISO def
+/Helvetica-BoldOblique starnetISO def
+/Courier starnetISO def
+/Courier-Oblique starnetISO def
+/Courier-Bold starnetISO def
+/Courier-BoldOblique starnetISO def
+cleartomark
+} bind def
+
+%%BeginResource: procset graphviz 0 0
+/coord-font-family /Times-Roman def
+/default-font-family /Times-Roman def
+/coordfont coord-font-family findfont 8 scalefont def
+
+/InvScaleFactor 1.0 def
+/set_scale {
+ dup 1 exch div /InvScaleFactor exch def
+ scale
+} bind def
+
+% styles
+/solid { [] 0 setdash } bind def
+/dashed { [9 InvScaleFactor mul dup ] 0 setdash } bind def
+/dotted { [1 InvScaleFactor mul 6 InvScaleFactor mul] 0 setdash } bind def
+/invis {/fill {newpath} def /stroke {newpath} def /show {pop newpath} def} bind def
+/bold { 2 setlinewidth } bind def
+/filled { } bind def
+/unfilled { } bind def
+/rounded { } bind def
+/diagonals { } bind def
+
+% hooks for setting color
+/nodecolor { sethsbcolor } bind def
+/edgecolor { sethsbcolor } bind def
+/graphcolor { sethsbcolor } bind def
+/nopcolor {pop pop pop} bind def
+
+/beginpage { % i j npages
+ /npages exch def
+ /j exch def
+ /i exch def
+ /str 10 string def
+ npages 1 gt {
+ gsave
+ coordfont setfont
+ 0 0 moveto
+ (\() show i str cvs show (,) show j str cvs show (\)) show
+ grestore
+ } if
+} bind def
+
+/set_font {
+ findfont exch
+ scalefont setfont
+} def
+
+% draw text fitted to its expected width
+/alignedtext { % width text
+ /text exch def
+ /width exch def
+ gsave
+ width 0 gt {
+ [] 0 setdash
+ text stringwidth pop width exch sub text length div 0 text ashow
+ } if
+ grestore
+} def
+
+/boxprim { % xcorner ycorner xsize ysize
+ 4 2 roll
+ moveto
+ 2 copy
+ exch 0 rlineto
+ 0 exch rlineto
+ pop neg 0 rlineto
+ closepath
+} bind def
+
+/ellipse_path {
+ /ry exch def
+ /rx exch def
+ /y exch def
+ /x exch def
+ matrix currentmatrix
+ newpath
+ x y translate
+ rx ry scale
+ 0 0 1 0 360 arc
+ setmatrix
+} bind def
+
+/endpage { showpage } bind def
+/showpage { } def
+
+/layercolorseq
+ [ % layer color sequence - darkest to lightest
+ [0 0 0]
+ [.2 .8 .8]
+ [.4 .8 .8]
+ [.6 .8 .8]
+ [.8 .8 .8]
+ ]
+def
+
+/layerlen layercolorseq length def
+
+/setlayer {/maxlayer exch def /curlayer exch def
+ layercolorseq curlayer 1 sub layerlen mod get
+ aload pop sethsbcolor
+ /nodecolor {nopcolor} def
+ /edgecolor {nopcolor} def
+ /graphcolor {nopcolor} def
+} bind def
+
+/onlayer { curlayer ne {invis} if } def
+
+/onlayers {
+ /myupper exch def
+ /mylower exch def
+ curlayer mylower lt
+ curlayer myupper gt
+ or
+ {invis} if
+} def
+
+/curlayer 0 def
+
+%%EndResource
+%%EndProlog
+%%BeginSetup
+14 default-font-family set_font
+1 setmiterlimit
+% /arrowlength 10 def
+% /arrowwidth 5 def
+
+% make sure pdfmark is harmless for PS-interpreters other than Distiller
+/pdfmark where {pop} {userdict /pdfmark /cleartomark load put} ifelse
+% make '<<' and '>>' safe on PS Level 1 devices
+/languagelevel where {pop languagelevel}{1} ifelse
+2 lt {
+ userdict (<<) cvn ([) cvn load put
+ userdict (>>) cvn ([) cvn load put
+} if
+
+%%EndSetup
+setupLatin1
+%%Page: 1 1
+%%PageBoundingBox: 36 36 108 82
+%%PageOrientation: Portrait
+0 0 1 beginpage
+gsave
+36 36 72 46 boxprim clip newpath
+1 1 set_scale 0 rotate 40 41 translate
+% AAT
+gsave
+1 setlinewidth
+0 0 0 nodecolor
+32 19 31.82 18.38 ellipse_path stroke
+0 0 0 nodecolor
+14 /Times-Roman set_font
+17.5 15.4 moveto 29 (AAT) alignedtext
+grestore
+endpage
+showpage
+grestore
+%%PageTrailer
+%%EndPage: 1
+%%Trailer
+%%Pages: 1
+%%BoundingBox: 36 36 108 82
+end
+restore
+%%EOF
diff --git a/genomix/genomix-pregelix/data/result/P4ForMergeGraph/graphviz/3/result.ps b/genomix/genomix-pregelix/data/result/P4ForMergeGraph/graphviz/3/result.ps
new file mode 100644
index 0000000..19f638a
--- /dev/null
+++ b/genomix/genomix-pregelix/data/result/P4ForMergeGraph/graphviz/3/result.ps
@@ -0,0 +1,206 @@
+%!PS-Adobe-3.0
+%%Creator: graphviz version 2.26.3 (20100126.1600)
+%%Title: G
+%%Pages: (atend)
+%%BoundingBox: (atend)
+%%EndComments
+save
+%%BeginProlog
+/DotDict 200 dict def
+DotDict begin
+
+/setupLatin1 {
+mark
+/EncodingVector 256 array def
+ EncodingVector 0
+
+ISOLatin1Encoding 0 255 getinterval putinterval
+EncodingVector 45 /hyphen put
+
+% Set up ISO Latin 1 character encoding
+/starnetISO {
+ dup dup findfont dup length dict begin
+ { 1 index /FID ne { def }{ pop pop } ifelse
+ } forall
+ /Encoding EncodingVector def
+ currentdict end definefont
+} def
+/Times-Roman starnetISO def
+/Times-Italic starnetISO def
+/Times-Bold starnetISO def
+/Times-BoldItalic starnetISO def
+/Helvetica starnetISO def
+/Helvetica-Oblique starnetISO def
+/Helvetica-Bold starnetISO def
+/Helvetica-BoldOblique starnetISO def
+/Courier starnetISO def
+/Courier-Oblique starnetISO def
+/Courier-Bold starnetISO def
+/Courier-BoldOblique starnetISO def
+cleartomark
+} bind def
+
+%%BeginResource: procset graphviz 0 0
+/coord-font-family /Times-Roman def
+/default-font-family /Times-Roman def
+/coordfont coord-font-family findfont 8 scalefont def
+
+/InvScaleFactor 1.0 def
+/set_scale {
+ dup 1 exch div /InvScaleFactor exch def
+ scale
+} bind def
+
+% styles
+/solid { [] 0 setdash } bind def
+/dashed { [9 InvScaleFactor mul dup ] 0 setdash } bind def
+/dotted { [1 InvScaleFactor mul 6 InvScaleFactor mul] 0 setdash } bind def
+/invis {/fill {newpath} def /stroke {newpath} def /show {pop newpath} def} bind def
+/bold { 2 setlinewidth } bind def
+/filled { } bind def
+/unfilled { } bind def
+/rounded { } bind def
+/diagonals { } bind def
+
+% hooks for setting color
+/nodecolor { sethsbcolor } bind def
+/edgecolor { sethsbcolor } bind def
+/graphcolor { sethsbcolor } bind def
+/nopcolor {pop pop pop} bind def
+
+/beginpage { % i j npages
+ /npages exch def
+ /j exch def
+ /i exch def
+ /str 10 string def
+ npages 1 gt {
+ gsave
+ coordfont setfont
+ 0 0 moveto
+ (\() show i str cvs show (,) show j str cvs show (\)) show
+ grestore
+ } if
+} bind def
+
+/set_font {
+ findfont exch
+ scalefont setfont
+} def
+
+% draw text fitted to its expected width
+/alignedtext { % width text
+ /text exch def
+ /width exch def
+ gsave
+ width 0 gt {
+ [] 0 setdash
+ text stringwidth pop width exch sub text length div 0 text ashow
+ } if
+ grestore
+} def
+
+/boxprim { % xcorner ycorner xsize ysize
+ 4 2 roll
+ moveto
+ 2 copy
+ exch 0 rlineto
+ 0 exch rlineto
+ pop neg 0 rlineto
+ closepath
+} bind def
+
+/ellipse_path {
+ /ry exch def
+ /rx exch def
+ /y exch def
+ /x exch def
+ matrix currentmatrix
+ newpath
+ x y translate
+ rx ry scale
+ 0 0 1 0 360 arc
+ setmatrix
+} bind def
+
+/endpage { showpage } bind def
+/showpage { } def
+
+/layercolorseq
+ [ % layer color sequence - darkest to lightest
+ [0 0 0]
+ [.2 .8 .8]
+ [.4 .8 .8]
+ [.6 .8 .8]
+ [.8 .8 .8]
+ ]
+def
+
+/layerlen layercolorseq length def
+
+/setlayer {/maxlayer exch def /curlayer exch def
+ layercolorseq curlayer 1 sub layerlen mod get
+ aload pop sethsbcolor
+ /nodecolor {nopcolor} def
+ /edgecolor {nopcolor} def
+ /graphcolor {nopcolor} def
+} bind def
+
+/onlayer { curlayer ne {invis} if } def
+
+/onlayers {
+ /myupper exch def
+ /mylower exch def
+ curlayer mylower lt
+ curlayer myupper gt
+ or
+ {invis} if
+} def
+
+/curlayer 0 def
+
+%%EndResource
+%%EndProlog
+%%BeginSetup
+14 default-font-family set_font
+1 setmiterlimit
+% /arrowlength 10 def
+% /arrowwidth 5 def
+
+% make sure pdfmark is harmless for PS-interpreters other than Distiller
+/pdfmark where {pop} {userdict /pdfmark /cleartomark load put} ifelse
+% make '<<' and '>>' safe on PS Level 1 devices
+/languagelevel where {pop languagelevel}{1} ifelse
+2 lt {
+ userdict (<<) cvn ([) cvn load put
+ userdict (>>) cvn ([) cvn load put
+} if
+
+%%EndSetup
+setupLatin1
+%%Page: 1 1
+%%PageBoundingBox: 36 36 108 82
+%%PageOrientation: Portrait
+0 0 1 beginpage
+gsave
+36 36 72 46 boxprim clip newpath
+1 1 set_scale 0 rotate 40 41 translate
+% AAT
+gsave
+1 setlinewidth
+0 0 0 nodecolor
+32 19 31.82 18.38 ellipse_path stroke
+0 0 0 nodecolor
+14 /Times-Roman set_font
+17.5 15.4 moveto 29 (AAT) alignedtext
+grestore
+endpage
+showpage
+grestore
+%%PageTrailer
+%%EndPage: 1
+%%Trailer
+%%Pages: 1
+%%BoundingBox: 36 36 108 82
+end
+restore
+%%EOF
diff --git a/genomix/genomix-pregelix/data/result/P4ForMergeGraph/graphviz/4/result.ps b/genomix/genomix-pregelix/data/result/P4ForMergeGraph/graphviz/4/result.ps
new file mode 100644
index 0000000..19f638a
--- /dev/null
+++ b/genomix/genomix-pregelix/data/result/P4ForMergeGraph/graphviz/4/result.ps
@@ -0,0 +1,206 @@
+%!PS-Adobe-3.0
+%%Creator: graphviz version 2.26.3 (20100126.1600)
+%%Title: G
+%%Pages: (atend)
+%%BoundingBox: (atend)
+%%EndComments
+save
+%%BeginProlog
+/DotDict 200 dict def
+DotDict begin
+
+/setupLatin1 {
+mark
+/EncodingVector 256 array def
+ EncodingVector 0
+
+ISOLatin1Encoding 0 255 getinterval putinterval
+EncodingVector 45 /hyphen put
+
+% Set up ISO Latin 1 character encoding
+/starnetISO {
+ dup dup findfont dup length dict begin
+ { 1 index /FID ne { def }{ pop pop } ifelse
+ } forall
+ /Encoding EncodingVector def
+ currentdict end definefont
+} def
+/Times-Roman starnetISO def
+/Times-Italic starnetISO def
+/Times-Bold starnetISO def
+/Times-BoldItalic starnetISO def
+/Helvetica starnetISO def
+/Helvetica-Oblique starnetISO def
+/Helvetica-Bold starnetISO def
+/Helvetica-BoldOblique starnetISO def
+/Courier starnetISO def
+/Courier-Oblique starnetISO def
+/Courier-Bold starnetISO def
+/Courier-BoldOblique starnetISO def
+cleartomark
+} bind def
+
+%%BeginResource: procset graphviz 0 0
+/coord-font-family /Times-Roman def
+/default-font-family /Times-Roman def
+/coordfont coord-font-family findfont 8 scalefont def
+
+/InvScaleFactor 1.0 def
+/set_scale {
+ dup 1 exch div /InvScaleFactor exch def
+ scale
+} bind def
+
+% styles
+/solid { [] 0 setdash } bind def
+/dashed { [9 InvScaleFactor mul dup ] 0 setdash } bind def
+/dotted { [1 InvScaleFactor mul 6 InvScaleFactor mul] 0 setdash } bind def
+/invis {/fill {newpath} def /stroke {newpath} def /show {pop newpath} def} bind def
+/bold { 2 setlinewidth } bind def
+/filled { } bind def
+/unfilled { } bind def
+/rounded { } bind def
+/diagonals { } bind def
+
+% hooks for setting color
+/nodecolor { sethsbcolor } bind def
+/edgecolor { sethsbcolor } bind def
+/graphcolor { sethsbcolor } bind def
+/nopcolor {pop pop pop} bind def
+
+/beginpage { % i j npages
+ /npages exch def
+ /j exch def
+ /i exch def
+ /str 10 string def
+ npages 1 gt {
+ gsave
+ coordfont setfont
+ 0 0 moveto
+ (\() show i str cvs show (,) show j str cvs show (\)) show
+ grestore
+ } if
+} bind def
+
+/set_font {
+ findfont exch
+ scalefont setfont
+} def
+
+% draw text fitted to its expected width
+/alignedtext { % width text
+ /text exch def
+ /width exch def
+ gsave
+ width 0 gt {
+ [] 0 setdash
+ text stringwidth pop width exch sub text length div 0 text ashow
+ } if
+ grestore
+} def
+
+/boxprim { % xcorner ycorner xsize ysize
+ 4 2 roll
+ moveto
+ 2 copy
+ exch 0 rlineto
+ 0 exch rlineto
+ pop neg 0 rlineto
+ closepath
+} bind def
+
+/ellipse_path {
+ /ry exch def
+ /rx exch def
+ /y exch def
+ /x exch def
+ matrix currentmatrix
+ newpath
+ x y translate
+ rx ry scale
+ 0 0 1 0 360 arc
+ setmatrix
+} bind def
+
+/endpage { showpage } bind def
+/showpage { } def
+
+/layercolorseq
+ [ % layer color sequence - darkest to lightest
+ [0 0 0]
+ [.2 .8 .8]
+ [.4 .8 .8]
+ [.6 .8 .8]
+ [.8 .8 .8]
+ ]
+def
+
+/layerlen layercolorseq length def
+
+/setlayer {/maxlayer exch def /curlayer exch def
+ layercolorseq curlayer 1 sub layerlen mod get
+ aload pop sethsbcolor
+ /nodecolor {nopcolor} def
+ /edgecolor {nopcolor} def
+ /graphcolor {nopcolor} def
+} bind def
+
+/onlayer { curlayer ne {invis} if } def
+
+/onlayers {
+ /myupper exch def
+ /mylower exch def
+ curlayer mylower lt
+ curlayer myupper gt
+ or
+ {invis} if
+} def
+
+/curlayer 0 def
+
+%%EndResource
+%%EndProlog
+%%BeginSetup
+14 default-font-family set_font
+1 setmiterlimit
+% /arrowlength 10 def
+% /arrowwidth 5 def
+
+% make sure pdfmark is harmless for PS-interpreters other than Distiller
+/pdfmark where {pop} {userdict /pdfmark /cleartomark load put} ifelse
+% make '<<' and '>>' safe on PS Level 1 devices
+/languagelevel where {pop languagelevel}{1} ifelse
+2 lt {
+ userdict (<<) cvn ([) cvn load put
+ userdict (>>) cvn ([) cvn load put
+} if
+
+%%EndSetup
+setupLatin1
+%%Page: 1 1
+%%PageBoundingBox: 36 36 108 82
+%%PageOrientation: Portrait
+0 0 1 beginpage
+gsave
+36 36 72 46 boxprim clip newpath
+1 1 set_scale 0 rotate 40 41 translate
+% AAT
+gsave
+1 setlinewidth
+0 0 0 nodecolor
+32 19 31.82 18.38 ellipse_path stroke
+0 0 0 nodecolor
+14 /Times-Roman set_font
+17.5 15.4 moveto 29 (AAT) alignedtext
+grestore
+endpage
+showpage
+grestore
+%%PageTrailer
+%%EndPage: 1
+%%Trailer
+%%Pages: 1
+%%BoundingBox: 36 36 108 82
+end
+restore
+%%EOF
diff --git a/genomix/genomix-pregelix/data/result/P4ForMergeGraph/graphviz/5/result.ps b/genomix/genomix-pregelix/data/result/P4ForMergeGraph/graphviz/5/result.ps
new file mode 100644
index 0000000..19f638a
--- /dev/null
+++ b/genomix/genomix-pregelix/data/result/P4ForMergeGraph/graphviz/5/result.ps
@@ -0,0 +1,206 @@
+%!PS-Adobe-3.0
+%%Creator: graphviz version 2.26.3 (20100126.1600)
+%%Title: G
+%%Pages: (atend)
+%%BoundingBox: (atend)
+%%EndComments
+save
+%%BeginProlog
+/DotDict 200 dict def
+DotDict begin
+
+/setupLatin1 {
+mark
+/EncodingVector 256 array def
+ EncodingVector 0
+
+ISOLatin1Encoding 0 255 getinterval putinterval
+EncodingVector 45 /hyphen put
+
+% Set up ISO Latin 1 character encoding
+/starnetISO {
+ dup dup findfont dup length dict begin
+ { 1 index /FID ne { def }{ pop pop } ifelse
+ } forall
+ /Encoding EncodingVector def
+ currentdict end definefont
+} def
+/Times-Roman starnetISO def
+/Times-Italic starnetISO def
+/Times-Bold starnetISO def
+/Times-BoldItalic starnetISO def
+/Helvetica starnetISO def
+/Helvetica-Oblique starnetISO def
+/Helvetica-Bold starnetISO def
+/Helvetica-BoldOblique starnetISO def
+/Courier starnetISO def
+/Courier-Oblique starnetISO def
+/Courier-Bold starnetISO def
+/Courier-BoldOblique starnetISO def
+cleartomark
+} bind def
+
+%%BeginResource: procset graphviz 0 0
+/coord-font-family /Times-Roman def
+/default-font-family /Times-Roman def
+/coordfont coord-font-family findfont 8 scalefont def
+
+/InvScaleFactor 1.0 def
+/set_scale {
+ dup 1 exch div /InvScaleFactor exch def
+ scale
+} bind def
+
+% styles
+/solid { [] 0 setdash } bind def
+/dashed { [9 InvScaleFactor mul dup ] 0 setdash } bind def
+/dotted { [1 InvScaleFactor mul 6 InvScaleFactor mul] 0 setdash } bind def
+/invis {/fill {newpath} def /stroke {newpath} def /show {pop newpath} def} bind def
+/bold { 2 setlinewidth } bind def
+/filled { } bind def
+/unfilled { } bind def
+/rounded { } bind def
+/diagonals { } bind def
+
+% hooks for setting color
+/nodecolor { sethsbcolor } bind def
+/edgecolor { sethsbcolor } bind def
+/graphcolor { sethsbcolor } bind def
+/nopcolor {pop pop pop} bind def
+
+/beginpage { % i j npages
+ /npages exch def
+ /j exch def
+ /i exch def
+ /str 10 string def
+ npages 1 gt {
+ gsave
+ coordfont setfont
+ 0 0 moveto
+ (\() show i str cvs show (,) show j str cvs show (\)) show
+ grestore
+ } if
+} bind def
+
+/set_font {
+ findfont exch
+ scalefont setfont
+} def
+
+% draw text fitted to its expected width
+/alignedtext { % width text
+ /text exch def
+ /width exch def
+ gsave
+ width 0 gt {
+ [] 0 setdash
+ text stringwidth pop width exch sub text length div 0 text ashow
+ } if
+ grestore
+} def
+
+/boxprim { % xcorner ycorner xsize ysize
+ 4 2 roll
+ moveto
+ 2 copy
+ exch 0 rlineto
+ 0 exch rlineto
+ pop neg 0 rlineto
+ closepath
+} bind def
+
+/ellipse_path {
+ /ry exch def
+ /rx exch def
+ /y exch def
+ /x exch def
+ matrix currentmatrix
+ newpath
+ x y translate
+ rx ry scale
+ 0 0 1 0 360 arc
+ setmatrix
+} bind def
+
+/endpage { showpage } bind def
+/showpage { } def
+
+/layercolorseq
+ [ % layer color sequence - darkest to lightest
+ [0 0 0]
+ [.2 .8 .8]
+ [.4 .8 .8]
+ [.6 .8 .8]
+ [.8 .8 .8]
+ ]
+def
+
+/layerlen layercolorseq length def
+
+/setlayer {/maxlayer exch def /curlayer exch def
+ layercolorseq curlayer 1 sub layerlen mod get
+ aload pop sethsbcolor
+ /nodecolor {nopcolor} def
+ /edgecolor {nopcolor} def
+ /graphcolor {nopcolor} def
+} bind def
+
+/onlayer { curlayer ne {invis} if } def
+
+/onlayers {
+ /myupper exch def
+ /mylower exch def
+ curlayer mylower lt
+ curlayer myupper gt
+ or
+ {invis} if
+} def
+
+/curlayer 0 def
+
+%%EndResource
+%%EndProlog
+%%BeginSetup
+14 default-font-family set_font
+1 setmiterlimit
+% /arrowlength 10 def
+% /arrowwidth 5 def
+
+% make sure pdfmark is harmless for PS-interpreters other than Distiller
+/pdfmark where {pop} {userdict /pdfmark /cleartomark load put} ifelse
+% make '<<' and '>>' safe on PS Level 1 devices
+/languagelevel where {pop languagelevel}{1} ifelse
+2 lt {
+ userdict (<<) cvn ([) cvn load put
+ userdict (>>) cvn ([) cvn load put
+} if
+
+%%EndSetup
+setupLatin1
+%%Page: 1 1
+%%PageBoundingBox: 36 36 108 82
+%%PageOrientation: Portrait
+0 0 1 beginpage
+gsave
+36 36 72 46 boxprim clip newpath
+1 1 set_scale 0 rotate 40 41 translate
+% AAT
+gsave
+1 setlinewidth
+0 0 0 nodecolor
+32 19 31.82 18.38 ellipse_path stroke
+0 0 0 nodecolor
+14 /Times-Roman set_font
+17.5 15.4 moveto 29 (AAT) alignedtext
+grestore
+endpage
+showpage
+grestore
+%%PageTrailer
+%%EndPage: 1
+%%Trailer
+%%Pages: 1
+%%BoundingBox: 36 36 108 82
+end
+restore
+%%EOF
diff --git a/genomix/genomix-pregelix/data/result/P4ForMergeGraph/graphviz/6/result.ps b/genomix/genomix-pregelix/data/result/P4ForMergeGraph/graphviz/6/result.ps
new file mode 100644
index 0000000..19f638a
--- /dev/null
+++ b/genomix/genomix-pregelix/data/result/P4ForMergeGraph/graphviz/6/result.ps
@@ -0,0 +1,206 @@
+%!PS-Adobe-3.0
+%%Creator: graphviz version 2.26.3 (20100126.1600)
+%%Title: G
+%%Pages: (atend)
+%%BoundingBox: (atend)
+%%EndComments
+save
+%%BeginProlog
+/DotDict 200 dict def
+DotDict begin
+
+/setupLatin1 {
+mark
+/EncodingVector 256 array def
+ EncodingVector 0
+
+ISOLatin1Encoding 0 255 getinterval putinterval
+EncodingVector 45 /hyphen put
+
+% Set up ISO Latin 1 character encoding
+/starnetISO {
+ dup dup findfont dup length dict begin
+ { 1 index /FID ne { def }{ pop pop } ifelse
+ } forall
+ /Encoding EncodingVector def
+ currentdict end definefont
+} def
+/Times-Roman starnetISO def
+/Times-Italic starnetISO def
+/Times-Bold starnetISO def
+/Times-BoldItalic starnetISO def
+/Helvetica starnetISO def
+/Helvetica-Oblique starnetISO def
+/Helvetica-Bold starnetISO def
+/Helvetica-BoldOblique starnetISO def
+/Courier starnetISO def
+/Courier-Oblique starnetISO def
+/Courier-Bold starnetISO def
+/Courier-BoldOblique starnetISO def
+cleartomark
+} bind def
+
+%%BeginResource: procset graphviz 0 0
+/coord-font-family /Times-Roman def
+/default-font-family /Times-Roman def
+/coordfont coord-font-family findfont 8 scalefont def
+
+/InvScaleFactor 1.0 def
+/set_scale {
+ dup 1 exch div /InvScaleFactor exch def
+ scale
+} bind def
+
+% styles
+/solid { [] 0 setdash } bind def
+/dashed { [9 InvScaleFactor mul dup ] 0 setdash } bind def
+/dotted { [1 InvScaleFactor mul 6 InvScaleFactor mul] 0 setdash } bind def
+/invis {/fill {newpath} def /stroke {newpath} def /show {pop newpath} def} bind def
+/bold { 2 setlinewidth } bind def
+/filled { } bind def
+/unfilled { } bind def
+/rounded { } bind def
+/diagonals { } bind def
+
+% hooks for setting color
+/nodecolor { sethsbcolor } bind def
+/edgecolor { sethsbcolor } bind def
+/graphcolor { sethsbcolor } bind def
+/nopcolor {pop pop pop} bind def
+
+/beginpage { % i j npages
+ /npages exch def
+ /j exch def
+ /i exch def
+ /str 10 string def
+ npages 1 gt {
+ gsave
+ coordfont setfont
+ 0 0 moveto
+ (\() show i str cvs show (,) show j str cvs show (\)) show
+ grestore
+ } if
+} bind def
+
+/set_font {
+ findfont exch
+ scalefont setfont
+} def
+
+% draw text fitted to its expected width
+/alignedtext { % width text
+ /text exch def
+ /width exch def
+ gsave
+ width 0 gt {
+ [] 0 setdash
+ text stringwidth pop width exch sub text length div 0 text ashow
+ } if
+ grestore
+} def
+
+/boxprim { % xcorner ycorner xsize ysize
+ 4 2 roll
+ moveto
+ 2 copy
+ exch 0 rlineto
+ 0 exch rlineto
+ pop neg 0 rlineto
+ closepath
+} bind def
+
+/ellipse_path {
+ /ry exch def
+ /rx exch def
+ /y exch def
+ /x exch def
+ matrix currentmatrix
+ newpath
+ x y translate
+ rx ry scale
+ 0 0 1 0 360 arc
+ setmatrix
+} bind def
+
+/endpage { showpage } bind def
+/showpage { } def
+
+/layercolorseq
+ [ % layer color sequence - darkest to lightest
+ [0 0 0]
+ [.2 .8 .8]
+ [.4 .8 .8]
+ [.6 .8 .8]
+ [.8 .8 .8]
+ ]
+def
+
+/layerlen layercolorseq length def
+
+/setlayer {/maxlayer exch def /curlayer exch def
+ layercolorseq curlayer 1 sub layerlen mod get
+ aload pop sethsbcolor
+ /nodecolor {nopcolor} def
+ /edgecolor {nopcolor} def
+ /graphcolor {nopcolor} def
+} bind def
+
+/onlayer { curlayer ne {invis} if } def
+
+/onlayers {
+ /myupper exch def
+ /mylower exch def
+ curlayer mylower lt
+ curlayer myupper gt
+ or
+ {invis} if
+} def
+
+/curlayer 0 def
+
+%%EndResource
+%%EndProlog
+%%BeginSetup
+14 default-font-family set_font
+1 setmiterlimit
+% /arrowlength 10 def
+% /arrowwidth 5 def
+
+% make sure pdfmark is harmless for PS-interpreters other than Distiller
+/pdfmark where {pop} {userdict /pdfmark /cleartomark load put} ifelse
+% make '<<' and '>>' safe on PS Level 1 devices
+/languagelevel where {pop languagelevel}{1} ifelse
+2 lt {
+ userdict (<<) cvn ([) cvn load put
+ userdict (>>) cvn ([) cvn load put
+} if
+
+%%EndSetup
+setupLatin1
+%%Page: 1 1
+%%PageBoundingBox: 36 36 108 82
+%%PageOrientation: Portrait
+0 0 1 beginpage
+gsave
+36 36 72 46 boxprim clip newpath
+1 1 set_scale 0 rotate 40 41 translate
+% AAT
+gsave
+1 setlinewidth
+0 0 0 nodecolor
+32 19 31.82 18.38 ellipse_path stroke
+0 0 0 nodecolor
+14 /Times-Roman set_font
+17.5 15.4 moveto 29 (AAT) alignedtext
+grestore
+endpage
+showpage
+grestore
+%%PageTrailer
+%%EndPage: 1
+%%Trailer
+%%Pages: 1
+%%BoundingBox: 36 36 108 82
+end
+restore
+%%EOF
diff --git a/genomix/genomix-pregelix/data/result/P4ForMergeGraph/graphviz/7/result.ps b/genomix/genomix-pregelix/data/result/P4ForMergeGraph/graphviz/7/result.ps
new file mode 100644
index 0000000..19f638a
--- /dev/null
+++ b/genomix/genomix-pregelix/data/result/P4ForMergeGraph/graphviz/7/result.ps
@@ -0,0 +1,206 @@
+%!PS-Adobe-3.0
+%%Creator: graphviz version 2.26.3 (20100126.1600)
+%%Title: G
+%%Pages: (atend)
+%%BoundingBox: (atend)
+%%EndComments
+save
+%%BeginProlog
+/DotDict 200 dict def
+DotDict begin
+
+/setupLatin1 {
+mark
+/EncodingVector 256 array def
+ EncodingVector 0
+
+ISOLatin1Encoding 0 255 getinterval putinterval
+EncodingVector 45 /hyphen put
+
+% Set up ISO Latin 1 character encoding
+/starnetISO {
+ dup dup findfont dup length dict begin
+ { 1 index /FID ne { def }{ pop pop } ifelse
+ } forall
+ /Encoding EncodingVector def
+ currentdict end definefont
+} def
+/Times-Roman starnetISO def
+/Times-Italic starnetISO def
+/Times-Bold starnetISO def
+/Times-BoldItalic starnetISO def
+/Helvetica starnetISO def
+/Helvetica-Oblique starnetISO def
+/Helvetica-Bold starnetISO def
+/Helvetica-BoldOblique starnetISO def
+/Courier starnetISO def
+/Courier-Oblique starnetISO def
+/Courier-Bold starnetISO def
+/Courier-BoldOblique starnetISO def
+cleartomark
+} bind def
+
+%%BeginResource: procset graphviz 0 0
+/coord-font-family /Times-Roman def
+/default-font-family /Times-Roman def
+/coordfont coord-font-family findfont 8 scalefont def
+
+/InvScaleFactor 1.0 def
+/set_scale {
+ dup 1 exch div /InvScaleFactor exch def
+ scale
+} bind def
+
+% styles
+/solid { [] 0 setdash } bind def
+/dashed { [9 InvScaleFactor mul dup ] 0 setdash } bind def
+/dotted { [1 InvScaleFactor mul 6 InvScaleFactor mul] 0 setdash } bind def
+/invis {/fill {newpath} def /stroke {newpath} def /show {pop newpath} def} bind def
+/bold { 2 setlinewidth } bind def
+/filled { } bind def
+/unfilled { } bind def
+/rounded { } bind def
+/diagonals { } bind def
+
+% hooks for setting color
+/nodecolor { sethsbcolor } bind def
+/edgecolor { sethsbcolor } bind def
+/graphcolor { sethsbcolor } bind def
+/nopcolor {pop pop pop} bind def
+
+/beginpage { % i j npages
+ /npages exch def
+ /j exch def
+ /i exch def
+ /str 10 string def
+ npages 1 gt {
+ gsave
+ coordfont setfont
+ 0 0 moveto
+ (\() show i str cvs show (,) show j str cvs show (\)) show
+ grestore
+ } if
+} bind def
+
+/set_font {
+ findfont exch
+ scalefont setfont
+} def
+
+% draw text fitted to its expected width
+/alignedtext { % width text
+ /text exch def
+ /width exch def
+ gsave
+ width 0 gt {
+ [] 0 setdash
+ text stringwidth pop width exch sub text length div 0 text ashow
+ } if
+ grestore
+} def
+
+/boxprim { % xcorner ycorner xsize ysize
+ 4 2 roll
+ moveto
+ 2 copy
+ exch 0 rlineto
+ 0 exch rlineto
+ pop neg 0 rlineto
+ closepath
+} bind def
+
+/ellipse_path {
+ /ry exch def
+ /rx exch def
+ /y exch def
+ /x exch def
+ matrix currentmatrix
+ newpath
+ x y translate
+ rx ry scale
+ 0 0 1 0 360 arc
+ setmatrix
+} bind def
+
+/endpage { showpage } bind def
+/showpage { } def
+
+/layercolorseq
+ [ % layer color sequence - darkest to lightest
+ [0 0 0]
+ [.2 .8 .8]
+ [.4 .8 .8]
+ [.6 .8 .8]
+ [.8 .8 .8]
+ ]
+def
+
+/layerlen layercolorseq length def
+
+/setlayer {/maxlayer exch def /curlayer exch def
+ layercolorseq curlayer 1 sub layerlen mod get
+ aload pop sethsbcolor
+ /nodecolor {nopcolor} def
+ /edgecolor {nopcolor} def
+ /graphcolor {nopcolor} def
+} bind def
+
+/onlayer { curlayer ne {invis} if } def
+
+/onlayers {
+ /myupper exch def
+ /mylower exch def
+ curlayer mylower lt
+ curlayer myupper gt
+ or
+ {invis} if
+} def
+
+/curlayer 0 def
+
+%%EndResource
+%%EndProlog
+%%BeginSetup
+14 default-font-family set_font
+1 setmiterlimit
+% /arrowlength 10 def
+% /arrowwidth 5 def
+
+% make sure pdfmark is harmless for PS-interpreters other than Distiller
+/pdfmark where {pop} {userdict /pdfmark /cleartomark load put} ifelse
+% make '<<' and '>>' safe on PS Level 1 devices
+/languagelevel where {pop languagelevel}{1} ifelse
+2 lt {
+ userdict (<<) cvn ([) cvn load put
+ userdict (>>) cvn ([) cvn load put
+} if
+
+%%EndSetup
+setupLatin1
+%%Page: 1 1
+%%PageBoundingBox: 36 36 108 82
+%%PageOrientation: Portrait
+0 0 1 beginpage
+gsave
+36 36 72 46 boxprim clip newpath
+1 1 set_scale 0 rotate 40 41 translate
+% AAT
+gsave
+1 setlinewidth
+0 0 0 nodecolor
+32 19 31.82 18.38 ellipse_path stroke
+0 0 0 nodecolor
+14 /Times-Roman set_font
+17.5 15.4 moveto 29 (AAT) alignedtext
+grestore
+endpage
+showpage
+grestore
+%%PageTrailer
+%%EndPage: 1
+%%Trailer
+%%Pages: 1
+%%BoundingBox: 36 36 108 82
+end
+restore
+%%EOF
diff --git a/genomix/genomix-pregelix/data/result/P4ForMergeGraph/graphviz/8/result.ps b/genomix/genomix-pregelix/data/result/P4ForMergeGraph/graphviz/8/result.ps
new file mode 100644
index 0000000..19f638a
--- /dev/null
+++ b/genomix/genomix-pregelix/data/result/P4ForMergeGraph/graphviz/8/result.ps
@@ -0,0 +1,206 @@
+%!PS-Adobe-3.0
+%%Creator: graphviz version 2.26.3 (20100126.1600)
+%%Title: G
+%%Pages: (atend)
+%%BoundingBox: (atend)
+%%EndComments
+save
+%%BeginProlog
+/DotDict 200 dict def
+DotDict begin
+
+/setupLatin1 {
+mark
+/EncodingVector 256 array def
+ EncodingVector 0
+
+ISOLatin1Encoding 0 255 getinterval putinterval
+EncodingVector 45 /hyphen put
+
+% Set up ISO Latin 1 character encoding
+/starnetISO {
+ dup dup findfont dup length dict begin
+ { 1 index /FID ne { def }{ pop pop } ifelse
+ } forall
+ /Encoding EncodingVector def
+ currentdict end definefont
+} def
+/Times-Roman starnetISO def
+/Times-Italic starnetISO def
+/Times-Bold starnetISO def
+/Times-BoldItalic starnetISO def
+/Helvetica starnetISO def
+/Helvetica-Oblique starnetISO def
+/Helvetica-Bold starnetISO def
+/Helvetica-BoldOblique starnetISO def
+/Courier starnetISO def
+/Courier-Oblique starnetISO def
+/Courier-Bold starnetISO def
+/Courier-BoldOblique starnetISO def
+cleartomark
+} bind def
+
+%%BeginResource: procset graphviz 0 0
+/coord-font-family /Times-Roman def
+/default-font-family /Times-Roman def
+/coordfont coord-font-family findfont 8 scalefont def
+
+/InvScaleFactor 1.0 def
+/set_scale {
+ dup 1 exch div /InvScaleFactor exch def
+ scale
+} bind def
+
+% styles
+/solid { [] 0 setdash } bind def
+/dashed { [9 InvScaleFactor mul dup ] 0 setdash } bind def
+/dotted { [1 InvScaleFactor mul 6 InvScaleFactor mul] 0 setdash } bind def
+/invis {/fill {newpath} def /stroke {newpath} def /show {pop newpath} def} bind def
+/bold { 2 setlinewidth } bind def
+/filled { } bind def
+/unfilled { } bind def
+/rounded { } bind def
+/diagonals { } bind def
+
+% hooks for setting color
+/nodecolor { sethsbcolor } bind def
+/edgecolor { sethsbcolor } bind def
+/graphcolor { sethsbcolor } bind def
+/nopcolor {pop pop pop} bind def
+
+/beginpage { % i j npages
+ /npages exch def
+ /j exch def
+ /i exch def
+ /str 10 string def
+ npages 1 gt {
+ gsave
+ coordfont setfont
+ 0 0 moveto
+ (\() show i str cvs show (,) show j str cvs show (\)) show
+ grestore
+ } if
+} bind def
+
+/set_font {
+ findfont exch
+ scalefont setfont
+} def
+
+% draw text fitted to its expected width
+/alignedtext { % width text
+ /text exch def
+ /width exch def
+ gsave
+ width 0 gt {
+ [] 0 setdash
+ text stringwidth pop width exch sub text length div 0 text ashow
+ } if
+ grestore
+} def
+
+/boxprim { % xcorner ycorner xsize ysize
+ 4 2 roll
+ moveto
+ 2 copy
+ exch 0 rlineto
+ 0 exch rlineto
+ pop neg 0 rlineto
+ closepath
+} bind def
+
+/ellipse_path {
+ /ry exch def
+ /rx exch def
+ /y exch def
+ /x exch def
+ matrix currentmatrix
+ newpath
+ x y translate
+ rx ry scale
+ 0 0 1 0 360 arc
+ setmatrix
+} bind def
+
+/endpage { showpage } bind def
+/showpage { } def
+
+/layercolorseq
+ [ % layer color sequence - darkest to lightest
+ [0 0 0]
+ [.2 .8 .8]
+ [.4 .8 .8]
+ [.6 .8 .8]
+ [.8 .8 .8]
+ ]
+def
+
+/layerlen layercolorseq length def
+
+/setlayer {/maxlayer exch def /curlayer exch def
+ layercolorseq curlayer 1 sub layerlen mod get
+ aload pop sethsbcolor
+ /nodecolor {nopcolor} def
+ /edgecolor {nopcolor} def
+ /graphcolor {nopcolor} def
+} bind def
+
+/onlayer { curlayer ne {invis} if } def
+
+/onlayers {
+ /myupper exch def
+ /mylower exch def
+ curlayer mylower lt
+ curlayer myupper gt
+ or
+ {invis} if
+} def
+
+/curlayer 0 def
+
+%%EndResource
+%%EndProlog
+%%BeginSetup
+14 default-font-family set_font
+1 setmiterlimit
+% /arrowlength 10 def
+% /arrowwidth 5 def
+
+% make sure pdfmark is harmless for PS-interpreters other than Distiller
+/pdfmark where {pop} {userdict /pdfmark /cleartomark load put} ifelse
+% make '<<' and '>>' safe on PS Level 1 devices
+/languagelevel where {pop languagelevel}{1} ifelse
+2 lt {
+ userdict (<<) cvn ([) cvn load put
+ userdict (>>) cvn ([) cvn load put
+} if
+
+%%EndSetup
+setupLatin1
+%%Page: 1 1
+%%PageBoundingBox: 36 36 108 82
+%%PageOrientation: Portrait
+0 0 1 beginpage
+gsave
+36 36 72 46 boxprim clip newpath
+1 1 set_scale 0 rotate 40 41 translate
+% AAT
+gsave
+1 setlinewidth
+0 0 0 nodecolor
+32 19 31.82 18.38 ellipse_path stroke
+0 0 0 nodecolor
+14 /Times-Roman set_font
+17.5 15.4 moveto 29 (AAT) alignedtext
+grestore
+endpage
+showpage
+grestore
+%%PageTrailer
+%%EndPage: 1
+%%Trailer
+%%Pages: 1
+%%BoundingBox: 36 36 108 82
+end
+restore
+%%EOF
diff --git a/genomix/genomix-pregelix/data/result/P4ForMergeGraph/graphviz/9/result.ps b/genomix/genomix-pregelix/data/result/P4ForMergeGraph/graphviz/9/result.ps
new file mode 100644
index 0000000..19f638a
--- /dev/null
+++ b/genomix/genomix-pregelix/data/result/P4ForMergeGraph/graphviz/9/result.ps
@@ -0,0 +1,206 @@
+%!PS-Adobe-3.0
+%%Creator: graphviz version 2.26.3 (20100126.1600)
+%%Title: G
+%%Pages: (atend)
+%%BoundingBox: (atend)
+%%EndComments
+save
+%%BeginProlog
+/DotDict 200 dict def
+DotDict begin
+
+/setupLatin1 {
+mark
+/EncodingVector 256 array def
+ EncodingVector 0
+
+ISOLatin1Encoding 0 255 getinterval putinterval
+EncodingVector 45 /hyphen put
+
+% Set up ISO Latin 1 character encoding
+/starnetISO {
+ dup dup findfont dup length dict begin
+ { 1 index /FID ne { def }{ pop pop } ifelse
+ } forall
+ /Encoding EncodingVector def
+ currentdict end definefont
+} def
+/Times-Roman starnetISO def
+/Times-Italic starnetISO def
+/Times-Bold starnetISO def
+/Times-BoldItalic starnetISO def
+/Helvetica starnetISO def
+/Helvetica-Oblique starnetISO def
+/Helvetica-Bold starnetISO def
+/Helvetica-BoldOblique starnetISO def
+/Courier starnetISO def
+/Courier-Oblique starnetISO def
+/Courier-Bold starnetISO def
+/Courier-BoldOblique starnetISO def
+cleartomark
+} bind def
+
+%%BeginResource: procset graphviz 0 0
+/coord-font-family /Times-Roman def
+/default-font-family /Times-Roman def
+/coordfont coord-font-family findfont 8 scalefont def
+
+/InvScaleFactor 1.0 def
+/set_scale {
+ dup 1 exch div /InvScaleFactor exch def
+ scale
+} bind def
+
+% styles
+/solid { [] 0 setdash } bind def
+/dashed { [9 InvScaleFactor mul dup ] 0 setdash } bind def
+/dotted { [1 InvScaleFactor mul 6 InvScaleFactor mul] 0 setdash } bind def
+/invis {/fill {newpath} def /stroke {newpath} def /show {pop newpath} def} bind def
+/bold { 2 setlinewidth } bind def
+/filled { } bind def
+/unfilled { } bind def
+/rounded { } bind def
+/diagonals { } bind def
+
+% hooks for setting color
+/nodecolor { sethsbcolor } bind def
+/edgecolor { sethsbcolor } bind def
+/graphcolor { sethsbcolor } bind def
+/nopcolor {pop pop pop} bind def
+
+/beginpage { % i j npages
+ /npages exch def
+ /j exch def
+ /i exch def
+ /str 10 string def
+ npages 1 gt {
+ gsave
+ coordfont setfont
+ 0 0 moveto
+ (\() show i str cvs show (,) show j str cvs show (\)) show
+ grestore
+ } if
+} bind def
+
+/set_font {
+ findfont exch
+ scalefont setfont
+} def
+
+% draw text fitted to its expected width
+/alignedtext { % width text
+ /text exch def
+ /width exch def
+ gsave
+ width 0 gt {
+ [] 0 setdash
+ text stringwidth pop width exch sub text length div 0 text ashow
+ } if
+ grestore
+} def
+
+/boxprim { % xcorner ycorner xsize ysize
+ 4 2 roll
+ moveto
+ 2 copy
+ exch 0 rlineto
+ 0 exch rlineto
+ pop neg 0 rlineto
+ closepath
+} bind def
+
+/ellipse_path {
+ /ry exch def
+ /rx exch def
+ /y exch def
+ /x exch def
+ matrix currentmatrix
+ newpath
+ x y translate
+ rx ry scale
+ 0 0 1 0 360 arc
+ setmatrix
+} bind def
+
+/endpage { showpage } bind def
+/showpage { } def
+
+/layercolorseq
+ [ % layer color sequence - darkest to lightest
+ [0 0 0]
+ [.2 .8 .8]
+ [.4 .8 .8]
+ [.6 .8 .8]
+ [.8 .8 .8]
+ ]
+def
+
+/layerlen layercolorseq length def
+
+/setlayer {/maxlayer exch def /curlayer exch def
+ layercolorseq curlayer 1 sub layerlen mod get
+ aload pop sethsbcolor
+ /nodecolor {nopcolor} def
+ /edgecolor {nopcolor} def
+ /graphcolor {nopcolor} def
+} bind def
+
+/onlayer { curlayer ne {invis} if } def
+
+/onlayers {
+ /myupper exch def
+ /mylower exch def
+ curlayer mylower lt
+ curlayer myupper gt
+ or
+ {invis} if
+} def
+
+/curlayer 0 def
+
+%%EndResource
+%%EndProlog
+%%BeginSetup
+14 default-font-family set_font
+1 setmiterlimit
+% /arrowlength 10 def
+% /arrowwidth 5 def
+
+% make sure pdfmark is harmless for PS-interpreters other than Distiller
+/pdfmark where {pop} {userdict /pdfmark /cleartomark load put} ifelse
+% make '<<' and '>>' safe on PS Level 1 devices
+/languagelevel where {pop languagelevel}{1} ifelse
+2 lt {
+ userdict (<<) cvn ([) cvn load put
+ userdict (>>) cvn ([) cvn load put
+} if
+
+%%EndSetup
+setupLatin1
+%%Page: 1 1
+%%PageBoundingBox: 36 36 108 82
+%%PageOrientation: Portrait
+0 0 1 beginpage
+gsave
+36 36 72 46 boxprim clip newpath
+1 1 set_scale 0 rotate 40 41 translate
+% AAT
+gsave
+1 setlinewidth
+0 0 0 nodecolor
+32 19 31.82 18.38 ellipse_path stroke
+0 0 0 nodecolor
+14 /Times-Roman set_font
+17.5 15.4 moveto 29 (AAT) alignedtext
+grestore
+endpage
+showpage
+grestore
+%%PageTrailer
+%%EndPage: 1
+%%Trailer
+%%Pages: 1
+%%BoundingBox: 36 36 108 82
+end
+restore
+%%EOF
diff --git a/genomix/genomix-pregelix/data/LogAlgorithmForMergeGraph/txt/.2.crc b/genomix/genomix-pregelix/data/result/P4ForMergeGraph/txt/.2.crc
similarity index 100%
copy from genomix/genomix-pregelix/data/LogAlgorithmForMergeGraph/txt/.2.crc
copy to genomix/genomix-pregelix/data/result/P4ForMergeGraph/txt/.2.crc
diff --git a/genomix/genomix-pregelix/data/LogAlgorithmForMergeGraph/txt/.3.crc b/genomix/genomix-pregelix/data/result/P4ForMergeGraph/txt/.3.crc
similarity index 100%
copy from genomix/genomix-pregelix/data/LogAlgorithmForMergeGraph/txt/.3.crc
copy to genomix/genomix-pregelix/data/result/P4ForMergeGraph/txt/.3.crc
diff --git a/genomix/genomix-pregelix/data/LogAlgorithmForMergeGraph/txt/.4.crc b/genomix/genomix-pregelix/data/result/P4ForMergeGraph/txt/.4.crc
similarity index 100%
copy from genomix/genomix-pregelix/data/LogAlgorithmForMergeGraph/txt/.4.crc
copy to genomix/genomix-pregelix/data/result/P4ForMergeGraph/txt/.4.crc
diff --git a/genomix/genomix-pregelix/data/LogAlgorithmForMergeGraph/txt/.5.crc b/genomix/genomix-pregelix/data/result/P4ForMergeGraph/txt/.5.crc
similarity index 100%
copy from genomix/genomix-pregelix/data/LogAlgorithmForMergeGraph/txt/.5.crc
copy to genomix/genomix-pregelix/data/result/P4ForMergeGraph/txt/.5.crc
diff --git a/genomix/genomix-pregelix/data/LogAlgorithmForMergeGraph/txt/.6.crc b/genomix/genomix-pregelix/data/result/P4ForMergeGraph/txt/.6.crc
similarity index 100%
copy from genomix/genomix-pregelix/data/LogAlgorithmForMergeGraph/txt/.6.crc
copy to genomix/genomix-pregelix/data/result/P4ForMergeGraph/txt/.6.crc
diff --git a/genomix/genomix-pregelix/data/LogAlgorithmForMergeGraph/txt/.7.crc b/genomix/genomix-pregelix/data/result/P4ForMergeGraph/txt/.7.crc
similarity index 100%
copy from genomix/genomix-pregelix/data/LogAlgorithmForMergeGraph/txt/.7.crc
copy to genomix/genomix-pregelix/data/result/P4ForMergeGraph/txt/.7.crc
diff --git a/genomix/genomix-pregelix/data/LogAlgorithmForMergeGraph/txt/.8.crc b/genomix/genomix-pregelix/data/result/P4ForMergeGraph/txt/.8.crc
similarity index 100%
copy from genomix/genomix-pregelix/data/LogAlgorithmForMergeGraph/txt/.8.crc
copy to genomix/genomix-pregelix/data/result/P4ForMergeGraph/txt/.8.crc
diff --git a/genomix/genomix-pregelix/data/LogAlgorithmForMergeGraph/txt/.9.crc b/genomix/genomix-pregelix/data/result/P4ForMergeGraph/txt/.9.crc
similarity index 100%
copy from genomix/genomix-pregelix/data/LogAlgorithmForMergeGraph/txt/.9.crc
copy to genomix/genomix-pregelix/data/result/P4ForMergeGraph/txt/.9.crc
diff --git a/genomix/genomix-pregelix/data/result/P4ForMergeGraph/txt/2 b/genomix/genomix-pregelix/data/result/P4ForMergeGraph/txt/2
new file mode 100755
index 0000000..f00dc00
--- /dev/null
+++ b/genomix/genomix-pregelix/data/result/P4ForMergeGraph/txt/2
@@ -0,0 +1 @@
+AAT {[(1-1_0)] [] [] [] [] AATA}
diff --git a/genomix/genomix-pregelix/data/result/P4ForMergeGraph/txt/3 b/genomix/genomix-pregelix/data/result/P4ForMergeGraph/txt/3
new file mode 100755
index 0000000..588691b
--- /dev/null
+++ b/genomix/genomix-pregelix/data/result/P4ForMergeGraph/txt/3
@@ -0,0 +1 @@
+AAT {[(1-1_0)] [] [] [] [] AATAG}
diff --git a/genomix/genomix-pregelix/data/result/P4ForMergeGraph/txt/4 b/genomix/genomix-pregelix/data/result/P4ForMergeGraph/txt/4
new file mode 100755
index 0000000..15476c2
--- /dev/null
+++ b/genomix/genomix-pregelix/data/result/P4ForMergeGraph/txt/4
@@ -0,0 +1 @@
+AAT {[(1-1_0)] [] [] [] [] AATAGA}
diff --git a/genomix/genomix-pregelix/data/result/P4ForMergeGraph/txt/5 b/genomix/genomix-pregelix/data/result/P4ForMergeGraph/txt/5
new file mode 100755
index 0000000..33b2666
--- /dev/null
+++ b/genomix/genomix-pregelix/data/result/P4ForMergeGraph/txt/5
@@ -0,0 +1 @@
+AAT {[(1-1_0)] [] [] [] [] AATAGAA}
diff --git a/genomix/genomix-pregelix/data/result/P4ForMergeGraph/txt/6 b/genomix/genomix-pregelix/data/result/P4ForMergeGraph/txt/6
new file mode 100755
index 0000000..c6ca9b5
--- /dev/null
+++ b/genomix/genomix-pregelix/data/result/P4ForMergeGraph/txt/6
@@ -0,0 +1 @@
+AAT {[(1-1_0)] [] [] [] [] AATAGAAC}
diff --git a/genomix/genomix-pregelix/data/result/P4ForMergeGraph/txt/7 b/genomix/genomix-pregelix/data/result/P4ForMergeGraph/txt/7
new file mode 100755
index 0000000..bc487c7
--- /dev/null
+++ b/genomix/genomix-pregelix/data/result/P4ForMergeGraph/txt/7
@@ -0,0 +1 @@
+AAT {[(1-1_0)] [] [] [] [] AATAGAACT}
diff --git a/genomix/genomix-pregelix/data/result/P4ForMergeGraph/txt/8 b/genomix/genomix-pregelix/data/result/P4ForMergeGraph/txt/8
new file mode 100755
index 0000000..f85f319
--- /dev/null
+++ b/genomix/genomix-pregelix/data/result/P4ForMergeGraph/txt/8
@@ -0,0 +1 @@
+AAT {[(1-1_0)] [] [] [] [] AATAGAACTT}
diff --git a/genomix/genomix-pregelix/data/result/P4ForMergeGraph/txt/9 b/genomix/genomix-pregelix/data/result/P4ForMergeGraph/txt/9
new file mode 100755
index 0000000..30986e1
--- /dev/null
+++ b/genomix/genomix-pregelix/data/result/P4ForMergeGraph/txt/9
@@ -0,0 +1 @@
+AAT {[(1-1_0)] [] [] [] [] AATAGAACTTA}
diff --git a/genomix/genomix-pregelix/src/main/java/edu/uci/ics/genomix/pregelix/format/InitialGraphCleanInputFormat.java b/genomix/genomix-pregelix/src/main/java/edu/uci/ics/genomix/pregelix/format/InitialGraphCleanInputFormat.java
index 5662da6..edb305f 100644
--- a/genomix/genomix-pregelix/src/main/java/edu/uci/ics/genomix/pregelix/format/InitialGraphCleanInputFormat.java
+++ b/genomix/genomix-pregelix/src/main/java/edu/uci/ics/genomix/pregelix/format/InitialGraphCleanInputFormat.java
@@ -76,7 +76,7 @@
vertexValue.setRFList(node.getRFList());
vertexValue.setRRList(node.getRRList());
// TODO make this more efficient (don't use toString)
- vertexValue.setActualKmer(new VKmerBytesWritable(getRecordReader().getCurrentKey().toString()));
+ vertexValue.setActualKmer(new VKmerBytesWritable(vertexId));
vertexValue.setState(State.IS_NON);
vertex.setVertexValue(vertexValue);
}
diff --git a/genomix/genomix-pregelix/src/main/java/edu/uci/ics/genomix/pregelix/graph/GenerateGraphViz.java b/genomix/genomix-pregelix/src/main/java/edu/uci/ics/genomix/pregelix/graph/GenerateGraphViz.java
index bb20797..89abdc2 100644
--- a/genomix/genomix-pregelix/src/main/java/edu/uci/ics/genomix/pregelix/graph/GenerateGraphViz.java
+++ b/genomix/genomix-pregelix/src/main/java/edu/uci/ics/genomix/pregelix/graph/GenerateGraphViz.java
@@ -11,6 +11,7 @@
import org.apache.hadoop.io.SequenceFile;
import edu.uci.ics.genomix.pregelix.io.VertexValueWritable;
+import edu.uci.ics.genomix.type.NodeWritable;
import edu.uci.ics.genomix.type.VKmerBytesWritable;
public class GenerateGraphViz {
@@ -19,6 +20,52 @@
* Construct a DOT graph in memory, convert it
* to image and store the image in the file system.
*/
+ public static void convertGraphBuildingOutputToGraphViz(String srcDir, String destDir) throws Exception {
+ GraphViz gv = new GraphViz();
+ gv.addln(gv.start_graph());
+
+ Configuration conf = new Configuration();
+ FileSystem fileSys = FileSystem.getLocal(conf);
+ File srcPath = new File(srcDir);
+
+ String outputNode = "";
+ String outputEdge = "";
+ for (File f : srcPath.listFiles((FilenameFilter) (new WildcardFileFilter("part*")))) {
+ SequenceFile.Reader reader = new SequenceFile.Reader(fileSys, new Path(f.getAbsolutePath()), conf);
+ VKmerBytesWritable key = new VKmerBytesWritable();
+ NodeWritable value = new NodeWritable();
+
+ gv.addln("rankdir=LR\n");
+
+ while (reader.next(key, value)) {
+ outputNode = "";
+ outputEdge = "";
+ if (key == null) {
+ break;
+ }
+ outputNode += key.toString();
+ /** convert edge to graph **/
+ outputEdge = convertEdgeToGraph(outputNode, value);
+ gv.addln(outputEdge);
+ /** add readIdSet **/
+ outputNode += " [shape=record, label = \"<f0> " + key.toString()
+ + "|<f1> " + value.getNodeIdList().printReadIdSet()
+ + "\"]\n";
+ gv.addln(outputNode);
+ }
+ reader.close();
+ }
+
+ gv.addln(gv.end_graph());
+ System.out.println(gv.getDotSource());
+
+ String type = "ps";
+ File folder = new File(destDir);
+ folder.mkdirs();
+ File out = new File(destDir + "/result." + type); // Linux
+ gv.writeGraphToFile(gv.getGraph(gv.getDotSource(), type), out);
+ }
+
public static void convertGraphCleanOutputToGraphViz(String srcDir, String destDir) throws Exception {
GraphViz gv = new GraphViz();
gv.addln(gv.start_graph());
@@ -34,6 +81,8 @@
VKmerBytesWritable key = new VKmerBytesWritable();
VertexValueWritable value = new VertexValueWritable();
+ gv.addln("rankdir=LR\n");
+
while (reader.next(key, value)) {
outputNode = "";
outputEdge = "";
@@ -44,6 +93,11 @@
/** convert edge to graph **/
outputEdge = convertEdgeToGraph(outputNode, value);
gv.addln(outputEdge);
+ /** add readIdSet **/
+ outputNode += " [shape=record, label = \"<f0> " + key.toString()
+ + "|<f1> " + value.getNodeIdList().printReadIdSet()
+ + "\"]\n";
+ gv.addln(outputNode);
}
reader.close();
}
@@ -58,6 +112,47 @@
gv.writeGraphToFile(gv.getGraph(gv.getDotSource(), type), out);
}
+ /**
+ * For graph building
+ * @param outputNode
+ * @param value
+ * @return
+ */
+ public static String convertEdgeToGraph(String outputNode, NodeWritable value){
+ String outputEdge = "";
+ Iterator<VKmerBytesWritable> kmerIterator;
+ kmerIterator = value.getFFList().iterator();
+ while(kmerIterator.hasNext()){
+ VKmerBytesWritable edge = kmerIterator.next();
+ outputEdge += outputNode + " -> " + edge.toString() + "[color = \"black\" label =\"FF\"]\n";
+ }
+ kmerIterator = value.getFRList().iterator();
+ while(kmerIterator.hasNext()){
+ VKmerBytesWritable edge = kmerIterator.next();
+ outputEdge += outputNode + " -> " + edge.toString() + "[color = \"blue\" label =\"FR\"]\n";
+ }
+ kmerIterator = value.getRFList().iterator();
+ while(kmerIterator.hasNext()){
+ VKmerBytesWritable edge = kmerIterator.next();
+ outputEdge += outputNode + " -> " + edge.toString() + "[color = \"green\" label =\"RF\"]\n";
+ }
+ kmerIterator = value.getRRList().iterator();
+ while(kmerIterator.hasNext()){
+ VKmerBytesWritable edge = kmerIterator.next();
+ outputEdge += outputNode + " -> " + edge.toString() + "[color = \"red\" label =\"RR\"]\n";
+ }
+ //TODO should output actualKmer instead of kmer
+ if(outputEdge == "")
+ outputEdge += outputNode;
+ return outputEdge;
+ }
+
+ /**
+ * For graph clean
+ * @param outputNode
+ * @param value
+ * @return
+ */
public static String convertEdgeToGraph(String outputNode, VertexValueWritable value){
String outputEdge = "";
Iterator<VKmerBytesWritable> kmerIterator;
@@ -69,18 +164,21 @@
kmerIterator = value.getFRList().iterator();
while(kmerIterator.hasNext()){
VKmerBytesWritable edge = kmerIterator.next();
- outputEdge += outputNode + " -> " + edge.toString() + "[color = \"black\" label =\"FR\"]\n";
+ outputEdge += outputNode + " -> " + edge.toString() + "[color = \"blue\" label =\"FR\"]\n";
}
kmerIterator = value.getRFList().iterator();
while(kmerIterator.hasNext()){
VKmerBytesWritable edge = kmerIterator.next();
- outputEdge += outputNode + " -> " + edge.toString() + "[color = \"red\" label =\"RF\"]\n";
+ outputEdge += outputNode + " -> " + edge.toString() + "[color = \"green\" label =\"RF\"]\n";
}
kmerIterator = value.getRRList().iterator();
while(kmerIterator.hasNext()){
VKmerBytesWritable edge = kmerIterator.next();
outputEdge += outputNode + " -> " + edge.toString() + "[color = \"red\" label =\"RR\"]\n";
}
+ //TODO should output actualKmer instead of kmer
+ if(outputEdge == "")
+ outputEdge += outputNode;
return outputEdge;
}
diff --git a/genomix/genomix-pregelix/src/main/java/edu/uci/ics/genomix/pregelix/io/HashMapWritable.java b/genomix/genomix-pregelix/src/main/java/edu/uci/ics/genomix/pregelix/io/HashMapWritable.java
new file mode 100644
index 0000000..c4556c7
--- /dev/null
+++ b/genomix/genomix-pregelix/src/main/java/edu/uci/ics/genomix/pregelix/io/HashMapWritable.java
@@ -0,0 +1,102 @@
+package edu.uci.ics.genomix.pregelix.io;
+
+import java.io.DataInput;
+import java.io.DataOutput;
+import java.io.IOException;
+import java.util.Map;
+import java.util.Set;
+import java.util.HashMap;
+
+import org.apache.hadoop.io.Writable;
+@SuppressWarnings("unchecked")
+public class HashMapWritable<K extends Writable, V extends Writable> extends HashMap<K, V> implements
+ Writable {
+
+ /**
+ *
+ */
+ private static final long serialVersionUID = 1L;
+
+ /**
+ * Creates a HashMapWritable object.
+ */
+ public HashMapWritable() {
+ super();
+ }
+
+ /**
+ * Creates a HashMapWritable object from a regular HashMap.
+ */
+ public HashMapWritable(HashMap<K, V> map) {
+ super(map);
+ }
+
+ /**
+ * Deserializes the array.
+ *
+ * @param in
+ * source for raw byte representation
+ */
+
+ @SuppressWarnings("rawtypes")
+ public void readFields(DataInput in) throws IOException {
+
+ this.clear();
+
+ int numEntries = in.readInt();
+ if(numEntries==0) return;
+
+ String keyClassName = in.readUTF();
+ String valueClassName = in.readUTF();
+
+ K objK;
+ V objV;
+ try {
+ Class keyClass = Class.forName(keyClassName);
+ Class valueClass = Class.forName(valueClassName);
+ for (int i = 0; i < numEntries; i++) {
+ objK = (K) keyClass.newInstance();
+ objK.readFields(in);
+ objV = (V) valueClass.newInstance();
+ objV.readFields(in);
+ put(objK, objV);
+ }
+
+ } catch (ClassNotFoundException e) {
+ e.printStackTrace();
+ } catch (IllegalAccessException e) {
+ e.printStackTrace();
+ } catch (InstantiationException e) {
+ e.printStackTrace();
+ }
+
+ }
+
+ /**
+ * Serializes this array.
+ *
+ * @param out
+ * where to write the raw byte representation
+ */
+ public void write(DataOutput out) throws IOException {
+ // Write out the number of entries in the map
+ out.writeInt(size());
+ if(size()==0) return;
+
+ // Write out the class names for keys and values
+ // assuming that data is homogeneuos (i.e., all entries have same types)
+ Set<Map.Entry<K, V>> entries = entrySet();
+ Map.Entry<K, V> first = entries.iterator().next();
+ K objK = first.getKey();
+ V objV = first.getValue();
+ out.writeUTF(objK.getClass().getCanonicalName());
+ out.writeUTF(objV.getClass().getCanonicalName());
+
+ // Then write out each key/value pair
+ for (Map.Entry<K, V> e: entrySet()) {
+ e.getKey().write(out);
+ e.getValue().write(out);
+ }
+ }
+
+}
diff --git a/genomix/genomix-pregelix/src/main/java/edu/uci/ics/genomix/pregelix/io/MessageWritable.java b/genomix/genomix-pregelix/src/main/java/edu/uci/ics/genomix/pregelix/io/MessageWritable.java
index 5cb3169..822d136 100644
--- a/genomix/genomix-pregelix/src/main/java/edu/uci/ics/genomix/pregelix/io/MessageWritable.java
+++ b/genomix/genomix-pregelix/src/main/java/edu/uci/ics/genomix/pregelix/io/MessageWritable.java
@@ -9,6 +9,7 @@
import edu.uci.ics.genomix.pregelix.type.CheckMessage;
import edu.uci.ics.genomix.pregelix.type.Message;
+import edu.uci.ics.genomix.type.KmerBytesWritable;
import edu.uci.ics.genomix.type.PositionListWritable;
import edu.uci.ics.genomix.type.VKmerBytesWritable;
@@ -19,7 +20,7 @@
* file stores the point to the file that stores the chains of connected DNA
*/
private VKmerBytesWritable sourceVertexId;
- private VKmerBytesWritable kmer;
+ private VKmerBytesWritable actualKmer;
private AdjacencyListWritable neighberNode; //incoming or outgoing
private PositionListWritable nodeIdList = new PositionListWritable();
private float averageCoverage;
@@ -33,7 +34,7 @@
public MessageWritable() {
sourceVertexId = new VKmerBytesWritable();
- kmer = new VKmerBytesWritable();
+ actualKmer = new VKmerBytesWritable();
neighberNode = new AdjacencyListWritable();
startVertexId = new VKmerBytesWritable();
averageCoverage = 0;
@@ -45,7 +46,7 @@
public MessageWritable(int kmerSize) {
kmerlength = kmerSize;
sourceVertexId = new VKmerBytesWritable(kmerSize);
- kmer = new VKmerBytesWritable(0);
+ actualKmer = new VKmerBytesWritable(0);
neighberNode = new AdjacencyListWritable(kmerSize);
startVertexId = new VKmerBytesWritable(kmerSize);
@@ -62,9 +63,9 @@
checkMessage |= CheckMessage.SOURCE;
this.sourceVertexId.setAsCopy(msg.getSourceVertexId());
}
- if (kmer != null) {
+ if (actualKmer != null) {
checkMessage |= CheckMessage.ACUTUALKMER;
- this.kmer.setAsCopy(msg.getActualKmer());
+ this.actualKmer.setAsCopy(msg.getActualKmer());
}
if (neighberNode != null) {
@@ -89,7 +90,7 @@
}
if (chainVertexId != null) {
checkMessage |= CheckMessage.ACUTUALKMER;
- this.kmer.setAsCopy(chainVertexId);
+ this.actualKmer.setAsCopy(chainVertexId);
}
if (neighberNode != null) {
@@ -106,7 +107,7 @@
public void reset(int kmerSize) {
checkMessage = (byte) 0;
kmerlength = kmerSize;
-// kmer.reset();
+// actualKmer.reset();
neighberNode.reset(kmerSize);
startVertexId.reset(kmerSize);
averageCoverage = 0;
@@ -126,25 +127,25 @@
}
public VKmerBytesWritable getActualKmer() {
- return kmer;
+ return actualKmer;
}
public void setActualKmer(VKmerBytesWritable actualKmer) {
if (actualKmer != null) {
checkMessage |= CheckMessage.ACUTUALKMER;
- this.kmer.setAsCopy(actualKmer);
+ this.actualKmer.setAsCopy(actualKmer);
}
}
public VKmerBytesWritable getCreatedVertexId() {
- return kmer;
+ return actualKmer;
}
public void setCreatedVertexId(VKmerBytesWritable actualKmer) {
if (actualKmer != null) {
checkMessage |= CheckMessage.ACUTUALKMER;
- this.kmer.setAsCopy(actualKmer);
+ this.actualKmer.setAsCopy(actualKmer);
}
}
@@ -171,6 +172,18 @@
}
}
+ /** for Scaffolding, startVertexId is used as seekedVertexId **/
+ public VKmerBytesWritable getSeekedVertexId() {
+ return startVertexId;
+ }
+
+ public void setSeekedVertexId(VKmerBytesWritable startVertexId) {
+ if(startVertexId != null){
+ checkMessage |= CheckMessage.START;
+ this.startVertexId.setAsCopy(startVertexId);
+ }
+ }
+
public float getAverageCoverage() {
return averageCoverage;
}
@@ -180,7 +193,7 @@
}
public int getLengthOfChain() {
- return kmer.getKmerLetterLength();
+ return actualKmer.getKmerLetterLength();
}
public byte getFlag() {
@@ -226,7 +239,7 @@
if ((checkMessage & CheckMessage.SOURCE) != 0)
sourceVertexId.write(out);
if ((checkMessage & CheckMessage.ACUTUALKMER) != 0)
- kmer.write(out);
+ actualKmer.write(out);
if ((checkMessage & CheckMessage.NEIGHBER) != 0)
neighberNode.write(out);
if ((checkMessage & CheckMessage.NODEIDLIST) != 0)
@@ -247,7 +260,7 @@
if ((checkMessage & CheckMessage.SOURCE) != 0)
sourceVertexId.readFields(in);
if ((checkMessage & CheckMessage.ACUTUALKMER) != 0)
- kmer.readFields(in);
+ actualKmer.readFields(in);
if ((checkMessage & CheckMessage.NEIGHBER) != 0)
neighberNode.readFields(in);
if ((checkMessage & CheckMessage.NODEIDLIST) != 0)
@@ -290,4 +303,16 @@
return Float.compare(left.averageCoverage, right.averageCoverage);
}
}
+
+ /**
+ * Update my coverage to be the average of this and other. Used when merging paths.
+ */
+ public void mergeCoverage(MessageWritable other) {
+ // sequence considered in the average doesn't include anything overlapping with other kmers
+ float adjustedLength = actualKmer.getKmerLetterLength() + other.actualKmer.getKmerLetterLength() - (KmerBytesWritable.getKmerLength() - 1) * 2;
+
+ float myCount = (actualKmer.getKmerLetterLength() - KmerBytesWritable.getKmerLength() - 1) * averageCoverage;
+ float otherCount = (other.actualKmer.getKmerLetterLength() - KmerBytesWritable.getKmerLength() - 1) * other.averageCoverage;
+ averageCoverage = (myCount + otherCount) / adjustedLength;
+ }
}
diff --git a/genomix/genomix-pregelix/src/main/java/edu/uci/ics/genomix/pregelix/io/VertexValueWritable.java b/genomix/genomix-pregelix/src/main/java/edu/uci/ics/genomix/pregelix/io/VertexValueWritable.java
index 245fe85..237d9ce 100644
--- a/genomix/genomix-pregelix/src/main/java/edu/uci/ics/genomix/pregelix/io/VertexValueWritable.java
+++ b/genomix/genomix-pregelix/src/main/java/edu/uci/ics/genomix/pregelix/io/VertexValueWritable.java
@@ -1,7 +1,6 @@
package edu.uci.ics.genomix.pregelix.io;
import java.io.*;
-
import org.apache.hadoop.io.WritableComparable;
import edu.uci.ics.genomix.type.PositionListWritable;
@@ -54,6 +53,7 @@
private float averageCoverage;
private byte state;
private boolean isFakeVertex = false;
+ private HashMapWritable<VKmerBytesWritable, VKmerListWritable> traverseMap = new HashMapWritable<VKmerBytesWritable, VKmerListWritable>();
public VertexValueWritable() {
this(0);
@@ -97,6 +97,11 @@
public PositionListWritable getNodeIdList() {
return nodeIdList;
}
+
+ //for testing
+ public long getHeadReadId(){
+ return 1;
+ }
public void setNodeIdList(PositionListWritable nodeIdList) {
this.nodeIdList.set(nodeIdList);
@@ -186,6 +191,15 @@
return actualKmer.getKmerLetterLength();
}
+
+ public HashMapWritable<VKmerBytesWritable, VKmerListWritable> getTraverseMap() {
+ return traverseMap;
+ }
+
+ public void setTraverseMap(HashMapWritable<VKmerBytesWritable, VKmerListWritable> traverseMap) {
+ this.traverseMap = traverseMap;
+ }
+
public void reset() {
this.reset(0);
}
@@ -212,6 +226,7 @@
averageCoverage = in.readFloat();
this.state = in.readByte();
this.isFakeVertex = in.readBoolean();
+ this.traverseMap.readFields(in);
}
@Override
@@ -225,6 +240,7 @@
out.writeFloat(averageCoverage);
out.writeByte(this.state);
out.writeBoolean(this.isFakeVertex);
+ this.traverseMap.write(out);
}
@Override
@@ -321,7 +337,6 @@
*/
public void processMerges(byte neighborToDeleteDir, VKmerBytesWritable nodeToDelete,
byte neighborToMergeDir, VKmerBytesWritable nodeToAdd,
-
int kmerSize, VKmerBytesWritable kmer){
switch (neighborToDeleteDir & MessageFlag.DIR_MASK) {
case MessageFlag.DIR_FF:
@@ -343,22 +358,22 @@
}
// TODO: remove switch below and replace with general direction merge
// this.getKmer().mergeWithDirKmer(neighborToMergeDir);
-
- switch (neighborToMergeDir & MessageFlag.DIR_MASK) {
- case MessageFlag.DIR_FF:
- this.getFFList().append(nodeToAdd);
- break;
- case MessageFlag.DIR_FR:
- this.getFRList().append(nodeToAdd);
- break;
- case MessageFlag.DIR_RF:
- this.getRFList().append(nodeToAdd);
- break;
- case MessageFlag.DIR_RR:
- this.getRRList().append(nodeToAdd);
- break;
+ if(nodeToAdd != null){ //if null, nodeToAdd is empty and so another node may be head or tail
+ switch (neighborToMergeDir & MessageFlag.DIR_MASK) {
+ case MessageFlag.DIR_FF:
+ this.getFFList().append(nodeToAdd);
+ break;
+ case MessageFlag.DIR_FR:
+ this.getFRList().append(nodeToAdd);
+ break;
+ case MessageFlag.DIR_RF:
+ this.getRFList().append(nodeToAdd);
+ break;
+ case MessageFlag.DIR_RR:
+ this.getRRList().append(nodeToAdd);
+ break;
+ }
}
}
-
}
diff --git a/genomix/genomix-pregelix/src/main/java/edu/uci/ics/genomix/pregelix/operator/bubblemerge/BubbleMergeVertex.java b/genomix/genomix-pregelix/src/main/java/edu/uci/ics/genomix/pregelix/operator/bubblemerge/BubbleMergeVertex.java
index c92148f..c97244a 100644
--- a/genomix/genomix-pregelix/src/main/java/edu/uci/ics/genomix/pregelix/operator/bubblemerge/BubbleMergeVertex.java
+++ b/genomix/genomix-pregelix/src/main/java/edu/uci/ics/genomix/pregelix/operator/bubblemerge/BubbleMergeVertex.java
@@ -29,6 +29,8 @@
private Map<VKmerBytesWritable, ArrayList<MessageWritable>> receivedMsgMap = new HashMap<VKmerBytesWritable, ArrayList<MessageWritable>>();
private ArrayList<MessageWritable> receivedMsgList = new ArrayList<MessageWritable>();
+ private Set<MessageWritable> unchangedSet = new HashSet<MessageWritable>();
+ private Set<MessageWritable> deletedSet = new HashSet<MessageWritable>();
/**
* initiate kmerSize, maxIteration
@@ -96,6 +98,48 @@
}
}
+ public void processSimilarSetToUnchangeSetAndDeletedSet(){
+ unchangedSet.clear();
+ deletedSet.clear();
+ MessageWritable topCoverageMessage = new MessageWritable();
+ MessageWritable tmpMessage = new MessageWritable();
+ Iterator<MessageWritable> it;
+ while(!receivedMsgList.isEmpty()){
+ it = receivedMsgList.iterator();
+ topCoverageMessage.set(it.next());
+ it.remove(); //delete topCoverage node
+ while(it.hasNext()){
+ tmpMessage.set(it.next());
+ //compute the similarity
+ float fracDissimilar = topCoverageMessage.getSourceVertexId().fracDissimilar(tmpMessage.getSourceVertexId());
+ if(fracDissimilar < dissimilarThreshold){ //If similar with top node, delete this node and put it in deletedSet
+ //add coverage to top node
+ topCoverageMessage.mergeCoverage(tmpMessage);
+ deletedSet.add(tmpMessage);
+ it.remove();
+ }
+ }
+ unchangedSet.add(topCoverageMessage);
+ }
+ }
+
+ public void processUnchangedSet(){
+ for(MessageWritable msg : unchangedSet){
+ outFlag = MessageFlag.UNCHANGE;
+ outgoingMsg.setFlag(outFlag);
+ outgoingMsg.setAverageCoverage(msg.getAverageCoverage());
+ sendMsg(msg.getSourceVertexId(), outgoingMsg);
+ }
+ }
+
+ public void processDeletedSet(){
+ for(MessageWritable msg : deletedSet){
+ outFlag = MessageFlag.KILL;
+ outgoingMsg.setFlag(outFlag);
+ sendMsg(msg.getSourceVertexId(), outgoingMsg);
+ }
+ }
+
@Override
public void compute(Iterator<MessageWritable> msgIterator) {
initVertex();
@@ -116,8 +160,7 @@
/** aggregate bubble nodes and grouped by major vertex **/
aggregateBubbleNodesByMajorNode(msgIterator);
- Set<MessageWritable> unchangedSet = new HashSet<MessageWritable>();
- Set<MessageWritable> deletedSet = new HashSet<MessageWritable>();
+
for(VKmerBytesWritable prevId : receivedMsgMap.keySet()){
if(receivedMsgList.size() > 1){ // filter bubble
/** for each startVertex, sort the node by decreasing order of coverage **/
@@ -125,38 +168,11 @@
Collections.sort(receivedMsgList, new MessageWritable.SortByCoverage());
/** process similarSet, keep the unchanged set and deleted set & add coverage to unchange node **/
- MessageWritable topCoverageMessage = new MessageWritable();
- MessageWritable tmpMessage = new MessageWritable();
- Iterator<MessageWritable> it;
- while(!receivedMsgList.isEmpty()){
- it = receivedMsgList.iterator();
- topCoverageMessage.set(it.next());
- it.remove(); //delete topCoverage node
- while(it.hasNext()){
- tmpMessage.set(it.next());
- //compute the similarity
- float fracDissimilar = (float) 0.02;
- if(fracDissimilar < dissimilarThreshold){ //If similar with top node, delete this node and put it in deletedSet
- //TODO add coverage to top node
- deletedSet.add(tmpMessage);
- it.remove();
- }
- }
- unchangedSet.add(topCoverageMessage);
- }
+ processSimilarSetToUnchangeSetAndDeletedSet();
/** send message to the unchanged set for updating coverage & send kill message to the deleted set **/
- for(MessageWritable msg : unchangedSet){
- outFlag = MessageFlag.UNCHANGE;
- outgoingMsg.setFlag(outFlag);
- outgoingMsg.setAverageCoverage(msg.getAverageCoverage());
- sendMsg(msg.getSourceVertexId(), outgoingMsg);
- }
- for(MessageWritable msg : deletedSet){
- outFlag = MessageFlag.KILL;
- outgoingMsg.setFlag(outFlag);
- sendMsg(msg.getSourceVertexId(), outgoingMsg);
- }
+ processUnchangedSet();
+ processDeletedSet();
}
}
} else if (getSuperstep() == 4){
@@ -165,6 +181,7 @@
if(incomingMsg.getFlag() == MessageFlag.KILL){
broadcaseKillself();
} else if(incomingMsg.getFlag() == MessageFlag.UNCHANGE){
+ /** update average coverage **/
getVertexValue().setAverageCoverage(incomingMsg.getAverageCoverage());
}
}
diff --git a/genomix/genomix-pregelix/src/main/java/edu/uci/ics/genomix/pregelix/operator/pathmerge/BasicGraphCleanVertex.java b/genomix/genomix-pregelix/src/main/java/edu/uci/ics/genomix/pregelix/operator/pathmerge/BasicGraphCleanVertex.java
index 58ef4d6..4936d17 100644
--- a/genomix/genomix-pregelix/src/main/java/edu/uci/ics/genomix/pregelix/operator/pathmerge/BasicGraphCleanVertex.java
+++ b/genomix/genomix-pregelix/src/main/java/edu/uci/ics/genomix/pregelix/operator/pathmerge/BasicGraphCleanVertex.java
@@ -283,7 +283,7 @@
* check if A need to be flipped with successor
*/
public boolean ifFilpWithSuccessor(){
- if(getVertexValue().getFRList().getLength() > 0)
+ if(getVertexValue().getFRList().getCountOfPosition() > 0)
return true;
else
return false;
@@ -293,7 +293,7 @@
* check if A need to be filpped with predecessor
*/
public boolean ifFlipWithPredecessor(){
- if(getVertexValue().getRFList().getLength() > 0)
+ if(getVertexValue().getRFList().getCountOfPosition() > 0)
return true;
else
return false;
@@ -304,9 +304,9 @@
*/
public void setSuccessorAdjMsg(){
outFlag &= MessageFlag.DIR_CLEAR;
- if(getVertexValue().getFFList().getLength() > 0)
+ if(getVertexValue().getFFList().getCountOfPosition() > 0)
outFlag |= MessageFlag.DIR_FF;
- else if(getVertexValue().getFRList().getLength() > 0)
+ else if(getVertexValue().getFRList().getCountOfPosition() > 0)
outFlag |= MessageFlag.DIR_FR;
else
outFlag |= MessageFlag.DIR_NO;
@@ -317,9 +317,9 @@
*/
public void setPredecessorAdjMsg(){
outFlag &= MessageFlag.DIR_CLEAR;
- if(getVertexValue().getRFList().getLength() > 0)
+ if(getVertexValue().getRFList().getCountOfPosition() > 0)
outFlag |= MessageFlag.DIR_RF;
- else if(getVertexValue().getRRList().getLength() > 0)
+ else if(getVertexValue().getRRList().getCountOfPosition() > 0)
outFlag |= MessageFlag.DIR_RR;
else
outFlag |= MessageFlag.DIR_NO;
@@ -664,14 +664,14 @@
break;
case MessageFlag.DIR_RF:
selfString = getVertexValue().getActualKmer().toString();
- match = selfString.substring(0,kmerSize - 1);
+ match = selfString.substring(0, kmerSize - 1);
msgString = GeneCode.reverseComplement(msg.getActualKmer().toString());
index = msgString.lastIndexOf(match) + kmerSize - 2;
tmpKmer.setByReadReverse(index + 1, msgString.substring(0, index + 1).getBytes(), 0);
break;
case MessageFlag.DIR_RR:
selfString = getVertexValue().getActualKmer().toString();
- match = selfString.substring(0,kmerSize - 1);
+ match = selfString.substring(0, kmerSize - 1);
msgString = msg.getActualKmer().toString();
index = msgString.lastIndexOf(match) + kmerSize - 2;
tmpKmer.setByRead(index + 1, msgString.substring(0, index + 1).getBytes(), 0);
diff --git a/genomix/genomix-pregelix/src/main/java/edu/uci/ics/genomix/pregelix/operator/pathmerge/P2ForPathMergeVertex.java b/genomix/genomix-pregelix/src/main/java/edu/uci/ics/genomix/pregelix/operator/pathmerge/P2ForPathMergeVertex.java
index c042f49..d16e6d5 100644
--- a/genomix/genomix-pregelix/src/main/java/edu/uci/ics/genomix/pregelix/operator/pathmerge/P2ForPathMergeVertex.java
+++ b/genomix/genomix-pregelix/src/main/java/edu/uci/ics/genomix/pregelix/operator/pathmerge/P2ForPathMergeVertex.java
@@ -46,7 +46,6 @@
MapReduceVertex {
private ArrayList<MessageWritable> receivedMsgList = new ArrayList<MessageWritable>();
- VKmerBytesWritable tmpKmer = new VKmerBytesWritable();
private boolean isFakeVertex = false;
/**
@@ -60,11 +59,11 @@
headFlag = (byte)(getVertexValue().getState() & State.IS_HEAD);
selfFlag = (byte)(getVertexValue().getState() & State.VERTEX_MASK);
if(incomingMsg == null)
- incomingMsg = new MessageWritable(kmerSize);
+ incomingMsg = new MessageWritable();
if(outgoingMsg == null)
- outgoingMsg = new MessageWritable(kmerSize);
+ outgoingMsg = new MessageWritable();
else
- outgoingMsg.reset(kmerSize);
+ outgoingMsg.reset();
receivedMsgList.clear();
if(reverseKmer == null)
reverseKmer = new VKmerBytesWritable();
@@ -80,7 +79,9 @@
}
isFakeVertex = ((byte)getVertexValue().getState() & State.FAKEFLAG_MASK) > 0 ? true : false;
if(destVertexId == null)
- destVertexId = new VKmerBytesWritable(kmerSize);
+ destVertexId = new VKmerBytesWritable();
+ if(tmpKmer == null)
+ tmpKmer = new VKmerBytesWritable();
}
/**
@@ -182,13 +183,13 @@
incomingMsg = msgIterator.next();
/** final Vertex Responses To FakeVertex **/
if((byte)(incomingMsg.getFlag() & MessageFlag.KILL_MASK) == MessageFlag.KILL){
- if((byte)(incomingMsg.getFlag() & MessageFlag.DIR_MASK) == MessageFlag.DIR_FROM_DEADVERTEX){
+ if((byte)(incomingMsg.getFlag() & MessageFlag.DEAD_MASK) == MessageFlag.DIR_FROM_DEADVERTEX){
responseToDeadVertex();
} else{
broadcaseKillself();
}
} else {
- /** for final processing **/
+ /** for final processing (2) **/
if(getMsgFlag() == MessageFlag.IS_FINAL){
sendFinalMergeMsg();
break;
@@ -241,7 +242,7 @@
}
else if (getSuperstep() % 3 == 0 && getSuperstep() <= maxIteration) {
if(!isFakeVertex){
- /** for processing final merge **/
+ /** for processing final merge (1) **/
if(msgIterator.hasNext()){
incomingMsg = msgIterator.next();
if(getMsgFlag() == MessageFlag.IS_FINAL){
@@ -260,7 +261,7 @@
voteToHalt();
}
}
- /** Fake vertex agregates message and group them by actual kmer **/
+ /** Fake vertex agregates message and group them by actual kmer (2) **/
else{
kmerMapper.clear();
/** Mapper **/
@@ -275,7 +276,7 @@
if(selfFlag != State.IS_HEAD)
voteToHalt();
}
- /** Fake vertex agregates message and group them by actual kmer **/
+ /** Fake vertex agregates message and group them by actual kmer (1) **/
else{
kmerMapper.clear();
/** Mapper **/
diff --git a/genomix/genomix-pregelix/src/main/java/edu/uci/ics/genomix/pregelix/operator/removelowcoverage/RemoveLowCoverageVertex.java b/genomix/genomix-pregelix/src/main/java/edu/uci/ics/genomix/pregelix/operator/removelowcoverage/RemoveLowCoverageVertex.java
new file mode 100644
index 0000000..3e822e4
--- /dev/null
+++ b/genomix/genomix-pregelix/src/main/java/edu/uci/ics/genomix/pregelix/operator/removelowcoverage/RemoveLowCoverageVertex.java
@@ -0,0 +1,55 @@
+package edu.uci.ics.genomix.pregelix.operator.removelowcoverage;
+
+import java.util.Iterator;
+
+import org.apache.hadoop.io.NullWritable;
+
+import edu.uci.ics.genomix.pregelix.client.Client;
+import edu.uci.ics.genomix.pregelix.format.GraphCleanInputFormat;
+import edu.uci.ics.genomix.pregelix.format.GraphCleanOutputFormat;
+import edu.uci.ics.genomix.pregelix.io.MessageWritable;
+import edu.uci.ics.genomix.pregelix.io.VertexValueWritable;
+import edu.uci.ics.genomix.type.VKmerBytesWritable;
+import edu.uci.ics.pregelix.api.graph.Vertex;
+import edu.uci.ics.pregelix.api.job.PregelixJob;
+
+public class RemoveLowCoverageVertex extends
+ Vertex<VKmerBytesWritable, VertexValueWritable, NullWritable, MessageWritable> {
+ public static final String KMER_SIZE = "RemoveLowCoverageVertex.kmerSize";
+ public static final String MIN_AVERAGECOVERAGE = "RemoveLowCoverageVertex.minAverageCoverage";
+ public static int kmerSize = -1;
+ private static float minAverageCoverage = -1;
+
+ /**
+ * initiate kmerSize, length
+ */
+ public void initVertex() {
+ if (kmerSize == -1)
+ kmerSize = getContext().getConfiguration().getInt(KMER_SIZE, 5);
+ if(minAverageCoverage == -1)
+ minAverageCoverage = getContext().getConfiguration().getFloat(MIN_AVERAGECOVERAGE, 5);
+ }
+
+ @Override
+ public void compute(Iterator<MessageWritable> msgIterator) {
+ initVertex();
+ if(getVertexValue().getAverageCoverage() < minAverageCoverage)
+ deleteVertex(getVertexId());
+ else
+ voteToHalt();
+ }
+
+ public static void main(String[] args) throws Exception {
+ PregelixJob job = new PregelixJob(RemoveLowCoverageVertex.class.getSimpleName());
+ job.setVertexClass(RemoveLowCoverageVertex.class);
+ /**
+ * BinaryInput and BinaryOutput
+ */
+ job.setVertexInputFormatClass(GraphCleanInputFormat.class);
+ job.setVertexOutputFormatClass(GraphCleanOutputFormat.class);
+ job.setDynamicVertexValueSize(true);
+ job.setOutputKeyClass(VKmerBytesWritable.class);
+ job.setOutputValueClass(VertexValueWritable.class);
+ Client.run(args, job);
+ }
+}
diff --git a/genomix/genomix-pregelix/src/main/java/edu/uci/ics/genomix/pregelix/operator/scaffolding/ScaffoldingVertex.java b/genomix/genomix-pregelix/src/main/java/edu/uci/ics/genomix/pregelix/operator/scaffolding/ScaffoldingVertex.java
new file mode 100644
index 0000000..be43658
--- /dev/null
+++ b/genomix/genomix-pregelix/src/main/java/edu/uci/ics/genomix/pregelix/operator/scaffolding/ScaffoldingVertex.java
@@ -0,0 +1,89 @@
+package edu.uci.ics.genomix.pregelix.operator.scaffolding;
+
+import java.util.HashMap;
+import java.util.Iterator;
+import java.util.Map;
+
+import edu.uci.ics.genomix.pregelix.io.HashMapWritable;
+import edu.uci.ics.genomix.pregelix.io.MessageWritable;
+import edu.uci.ics.genomix.pregelix.operator.pathmerge.MapReduceVertex;
+import edu.uci.ics.genomix.type.VKmerBytesWritable;
+import edu.uci.ics.genomix.type.VKmerListWritable;
+
+public class ScaffoldingVertex extends
+ MapReduceVertex{
+
+ public static Map<Long, VKmerListWritable> scaffoldingMap = new HashMap<Long, VKmerListWritable>();
+
+ private HashMapWritable<VKmerBytesWritable, VKmerListWritable> traverseMap = new HashMapWritable<VKmerBytesWritable, VKmerListWritable>();
+
+ public void initVertex() {
+ if (kmerSize == -1)
+ kmerSize = getContext().getConfiguration().getInt(KMER_SIZE, 5);
+ if (maxIteration < 0)
+ maxIteration = getContext().getConfiguration().getInt(ITERATIONS, 1000000);
+ if(incomingMsg == null)
+ incomingMsg = new MessageWritable(kmerSize);
+ if(outgoingMsg == null)
+ outgoingMsg = new MessageWritable(kmerSize);
+ else
+ outgoingMsg.reset(kmerSize);
+ if(fakeVertex == null){
+ fakeVertex = new VKmerBytesWritable();
+ String random = generaterRandomString(kmerSize + 1);
+ fakeVertex.setByRead(kmerSize + 1, random.getBytes(), 0);
+ }
+ if(destVertexId == null)
+ destVertexId = new VKmerBytesWritable(kmerSize);
+ if(kmerList == null)
+ kmerList = new VKmerListWritable();
+ }
+
+ @Override
+ public void compute(Iterator<MessageWritable> msgIterator) {
+ initVertex();
+ if(getSuperstep() == 1){
+ /** add a fake vertex **/
+ addFakeVertex();
+ /** grouped by 5' readId **/
+ long mainReadId = getVertexValue().getHeadReadId();
+ if(mainReadId != 0){ //empty or not
+ if(scaffoldingMap.containsKey(mainReadId)){
+ kmerList.setCopy(scaffoldingMap.get(mainReadId));
+ kmerList.append(getVertexId());
+ } else{
+ kmerList.reset();
+ kmerList.append(getVertexId());
+ }
+ scaffoldingMap.put(mainReadId, kmerList);
+ }
+ voteToHalt();
+ } else if(getSuperstep() == 2){
+ /** process scaffoldingMap **/
+ for(Long readId : scaffoldingMap.keySet()){
+ kmerList.setCopy(scaffoldingMap.get(readId));
+ if(kmerList.getCountOfPosition() == 2){
+ outgoingMsg.setSeekedVertexId(kmerList.getPosition(1));
+ sendMsg(kmerList.getPosition(0), outgoingMsg);
+ outgoingMsg.setSeekedVertexId(kmerList.getPosition(0));
+ sendMsg(kmerList.getPosition(1), outgoingMsg);
+ }
+ }
+ deleteVertex(getVertexId());
+ } else if(getSuperstep() == 3){
+ if(msgIterator.hasNext()){
+ incomingMsg = msgIterator.next();
+
+ /** initiate the traverseMap in vertexValue **/
+ kmerList.reset();
+ kmerList.append(incomingMsg.getSeekedVertexId());
+ traverseMap.clear();
+ traverseMap.put(incomingMsg.getSeekedVertexId(), kmerList);
+ getVertexValue().setTraverseMap(traverseMap);
+
+ /** begin to traverse **/
+
+ }
+ }
+ }
+}
diff --git a/genomix/genomix-pregelix/src/main/java/edu/uci/ics/genomix/pregelix/operator/splitrepeat/SplitRepeatVertex.java b/genomix/genomix-pregelix/src/main/java/edu/uci/ics/genomix/pregelix/operator/splitrepeat/SplitRepeatVertex.java
index 83958fe..ee493f9 100644
--- a/genomix/genomix-pregelix/src/main/java/edu/uci/ics/genomix/pregelix/operator/splitrepeat/SplitRepeatVertex.java
+++ b/genomix/genomix-pregelix/src/main/java/edu/uci/ics/genomix/pregelix/operator/splitrepeat/SplitRepeatVertex.java
@@ -96,9 +96,11 @@
if(outgoingEdgeList == null)
outgoingEdgeList = new VKmerListWritable();
if(createdVertexId == null)
- createdVertexId = new VKmerBytesWritable(kmerSize);//kmerSize + 1
+ createdVertexId = new VKmerBytesWritable(kmerSize + 1);
if(destVertexId == null)
destVertexId = new VKmerBytesWritable(kmerSize);
+ if(tmpKmer == null)
+ tmpKmer = new VKmerBytesWritable();
}
/**
@@ -132,6 +134,11 @@
return "GGG";
}
+ public void randomGenerateVertexId(int numOfSuffix){
+ String newVertexId = getVertexId().toString() + generaterRandomString(numOfSuffix);;
+ createdVertexId.setByRead(kmerSize + numOfSuffix, newVertexId.getBytes(), 0);
+ }
+
public void generateKmerMap(Iterator<MessageWritable> msgIterator){
kmerMap.clear();
while(msgIterator.hasNext()){
@@ -322,7 +329,6 @@
/** set self readId set **/
setSelfReadIdSet();
- int count = 0;
//A set storing deleted edges
Set<DeletedEdge> deletedEdges = new HashSet<DeletedEdge>();
/** process connectedTable **/
@@ -330,8 +336,8 @@
/** set edgeList and edgeDir based on connectedTable **/
setEdgeListAndEdgeDir(i);
- VKmerBytesWritable incomingEdge = new VKmerBytesWritable(kmerSize);
- VKmerBytesWritable outgoingEdge = new VKmerBytesWritable(kmerSize);
+ VKmerBytesWritable incomingEdge = new VKmerBytesWritable();
+ VKmerBytesWritable outgoingEdge = new VKmerBytesWritable();
for(int x = 0; x < incomingEdgeList.getCountOfPosition(); x++){
for(int y = 0; y < outgoingEdgeList.getCountOfPosition(); y++){
incomingEdge.setAsCopy(incomingEdgeList.getPosition(x));
@@ -340,11 +346,8 @@
setNeighborEdgeIntersection(incomingEdge, outgoingEdge);
if(!neighborEdgeIntersection.isEmpty()){
- if(count == 0)
- createdVertexId.setByRead("AAA".length(), "AAA".getBytes(), 0);//kmerSize + 1 generaterRandomString(kmerSize).getBytes()
- else
- createdVertexId.setByRead("GGG".length(), "GGG".getBytes(), 0);
- count++;
+ /** random generate vertexId of new vertex **/
+ randomGenerateVertexId(3);
/** create new/created vertex **/
createNewVertex(i, incomingEdge, outgoingEdge);
@@ -356,31 +359,7 @@
storeDeletedEdge(deletedEdges, i, incomingEdge, outgoingEdge);
}
}
- }
-
-// for(KmerBytesWritable incomingEdge : incomingEdgeList){
-// for(KmerBytesWritable outgoingEdge : outgoingEdgeList){
-// /** set neighborEdge readId intersection **/
-// setNeighborEdgeIntersection(incomingEdge, outgoingEdge);
-//
-// if(!neighborEdgeIntersection.isEmpty()){
-// if(count == 0)
-// createdVertexId.setByRead("AAA".getBytes(), 0);//kmerSize + 1 generaterRandomString(kmerSize).getBytes()
-// else
-// createdVertexId.setByRead("GGG".getBytes(), 0);
-// count++;
-//
-// /** create new/created vertex **/
-// createNewVertex(i, incomingEdge, outgoingEdge);
-//
-// /** send msg to neighbors to update their edges to new vertex **/
-// sendMsgToUpdateEdge(incomingEdge, outgoingEdge);
-//
-// /** store deleted edge **/
-// storeDeletedEdge(deletedEdges, i, incomingEdge, outgoingEdge);
-// }
-// }
-// }
+ }
}
/** delete extra edges from old vertex **/
for(DeletedEdge deletedEdge : deletedEdges){
diff --git a/genomix/genomix-pregelix/src/main/java/edu/uci/ics/genomix/pregelix/sequencefile/ConvertNodeToIdValue.java b/genomix/genomix-pregelix/src/main/java/edu/uci/ics/genomix/pregelix/sequencefile/ConvertNodeToIdValue.java
deleted file mode 100644
index 4e728e2..0000000
--- a/genomix/genomix-pregelix/src/main/java/edu/uci/ics/genomix/pregelix/sequencefile/ConvertNodeToIdValue.java
+++ /dev/null
@@ -1,58 +0,0 @@
-package edu.uci.ics.genomix.pregelix.sequencefile;
-
-import java.io.File;
-import java.io.IOException;
-
-import org.apache.commons.io.FileUtils;
-import org.apache.hadoop.conf.Configuration;
-import org.apache.hadoop.fs.FileSystem;
-import org.apache.hadoop.fs.Path;
-import org.apache.hadoop.io.NullWritable;
-import org.apache.hadoop.io.SequenceFile;
-import org.apache.hadoop.io.SequenceFile.CompressionType;
-
-import edu.uci.ics.genomix.type.NodeWritable;
-import edu.uci.ics.genomix.type.PositionWritable;
-import edu.uci.ics.genomix.pregelix.io.VertexValueWritable;
-import edu.uci.ics.genomix.pregelix.io.VertexValueWritable.State;
-
-
-public class ConvertNodeToIdValue {
-
- public static void convert(Path inFile, Path outFile)
- throws IOException {
- Configuration conf = new Configuration();
- FileSystem fileSys = FileSystem.get(conf);
-
- SequenceFile.Reader reader = new SequenceFile.Reader(fileSys, inFile, conf);
- SequenceFile.Writer writer = SequenceFile.createWriter(fileSys, conf, outFile, PositionWritable.class,
- VertexValueWritable.class, CompressionType.NONE);
- NodeWritable node = new NodeWritable();
- NullWritable value = NullWritable.get();
- PositionWritable outputKey = new PositionWritable();
- VertexValueWritable outputValue = new VertexValueWritable();
-
- while(reader.next(node, value)) {
-// System.out.println(node.getNodeID().toString());
-// outputKey.set(node.getNodeID());
- outputValue.setFFList(node.getFFList());
- outputValue.setFRList(node.getFRList());
- outputValue.setRFList(node.getRFList());
- outputValue.setRRList(node.getRRList());
- outputValue.setActualKmer(node.getKmer());
- outputValue.setState(State.IS_HEAD);
- writer.append(outputKey, outputValue);
- }
- writer.close();
- reader.close();
- }
-
- public static void main(String[] args) throws IOException {
- Path dir = new Path("data/test");
- Path outDir = new Path("data/input");
- FileUtils.cleanDirectory(new File("data/input"));
- Path inFile = new Path(dir, "result.graphbuild.txt.bin");
- Path outFile = new Path(outDir, "out");
- convert(inFile,outFile);
- }
-}
diff --git a/genomix/genomix-pregelix/src/main/java/edu/uci/ics/genomix/pregelix/sequencefile/ConvertToSequenceFile.java b/genomix/genomix-pregelix/src/main/java/edu/uci/ics/genomix/pregelix/sequencefile/ConvertToSequenceFile.java
deleted file mode 100644
index 2a7d668..0000000
--- a/genomix/genomix-pregelix/src/main/java/edu/uci/ics/genomix/pregelix/sequencefile/ConvertToSequenceFile.java
+++ /dev/null
@@ -1,41 +0,0 @@
-package edu.uci.ics.genomix.pregelix.sequencefile;
-
-import java.io.IOException;
-
-import org.apache.hadoop.conf.Configuration;
-import org.apache.hadoop.fs.Path;
-import org.apache.hadoop.io.LongWritable;
-import org.apache.hadoop.io.Text;
-import org.apache.hadoop.mapreduce.Job;
-import org.apache.hadoop.mapreduce.Mapper;
-import org.apache.hadoop.mapreduce.Reducer;
-import org.apache.hadoop.mapreduce.lib.input.TextInputFormat;
-import org.apache.hadoop.mapreduce.lib.output.SequenceFileOutputFormat;
-
-public class ConvertToSequenceFile {
- public static void main(String[] args) throws IOException, InterruptedException, ClassNotFoundException {
-
- Configuration conf = new Configuration();
- Job job = new Job(conf);
- job.setJobName("Convert Text");
- job.setJarByClass(Mapper.class);
-
- job.setMapperClass(Mapper.class);
- job.setReducerClass(Reducer.class);
-
- // increase if you need sorting or a special number of files
- job.setNumReduceTasks(0);
-
- job.setOutputKeyClass(LongWritable.class);
- job.setOutputValueClass(Text.class);
-
- job.setOutputFormatClass(SequenceFileOutputFormat.class);
- job.setInputFormatClass(TextInputFormat.class);
-
- TextInputFormat.addInputPath(job, new Path("data/webmap/part-00000"));
- SequenceFileOutputFormat.setOutputPath(job, new Path("folder_seq"));
-
- // submit and wait for completion
- job.waitForCompletion(true);
- }
-}
diff --git a/genomix/genomix-pregelix/src/main/java/edu/uci/ics/genomix/pregelix/sequencefile/GenerateSmallFile.java b/genomix/genomix-pregelix/src/main/java/edu/uci/ics/genomix/pregelix/sequencefile/GenerateSmallFile.java
deleted file mode 100644
index d3180c8..0000000
--- a/genomix/genomix-pregelix/src/main/java/edu/uci/ics/genomix/pregelix/sequencefile/GenerateSmallFile.java
+++ /dev/null
@@ -1,97 +0,0 @@
-package edu.uci.ics.genomix.pregelix.sequencefile;
-
-import java.io.BufferedReader;
-import java.io.BufferedWriter;
-import java.io.File;
-import java.io.FileNotFoundException;
-import java.io.FileReader;
-import java.io.FileWriter;
-import java.io.IOException;
-
-import org.apache.commons.io.FileUtils;
-import org.apache.hadoop.conf.Configuration;
-import org.apache.hadoop.fs.FileSystem;
-import org.apache.hadoop.fs.Path;
-import org.apache.hadoop.io.NullWritable;
-import org.apache.hadoop.io.SequenceFile;
-import org.apache.hadoop.io.SequenceFile.CompressionType;
-
-import edu.uci.ics.genomix.type.KmerBytesWritable;
-
-public class GenerateSmallFile {
-
- public static void generateNumOfLinesFromGraphBuildResuiltBigFile(Path inFile, Path outFile, int numOfLines)
- throws IOException {
- Configuration conf = new Configuration();
- FileSystem fileSys = FileSystem.get(conf);
-
- SequenceFile.Reader reader = new SequenceFile.Reader(fileSys, inFile, conf);
- SequenceFile.Writer writer = SequenceFile.createWriter(fileSys, conf, outFile, KmerBytesWritable.class,
- NullWritable.class, CompressionType.NONE);
- KmerBytesWritable.setGlobalKmerLength(55);
- KmerBytesWritable outKey = new KmerBytesWritable();
- int i = 0;
-
- for (i = 0; i < numOfLines; i++) {
- // System.out.println(i);
- reader.next(outKey, null);
- writer.append(outKey, null);
- }
- writer.close();
- reader.close();
- }
-
- public static void generateNumOfLinesFromGraphBuildResuiltBigFile(String inFile, String outFile, int numOfLines)
- throws IOException {
- String lines = readTextFile(inFile, numOfLines);
- writeTextFile(outFile, lines);
- }
-
- public static String readTextFile(String fileName, int numOfLines) {
- String returnValue = "";
- FileReader file;
- String line = "";
- try {
- file = new FileReader(fileName);
- BufferedReader reader = new BufferedReader(file);
- try {
- while ((numOfLines > 0) && (line = reader.readLine()) != null) {
- returnValue += line + "\n";
- numOfLines--;
- }
- } finally {
- reader.close();
- }
- } catch (FileNotFoundException e) {
- throw new RuntimeException("File not found");
- } catch (IOException e) {
- throw new RuntimeException("IO Error occured");
- }
- return returnValue;
-
- }
-
- public static void writeTextFile(String fileName, String s) {
- FileWriter output;
- try {
- output = new FileWriter(fileName);
- BufferedWriter writer = new BufferedWriter(output);
- writer.write(s);
- writer.close();
- } catch (IOException e) {
- e.printStackTrace();
- }
- }
-
- public static void main(String[] args) throws IOException {
- Path dir = new Path("data/split.aa");
- Path outDir = new Path("data/input");
- FileUtils.cleanDirectory(new File("data/input"));
- Path inFile = new Path(dir, "part-0");
- Path outFile = new Path(outDir, "part-0-out-1000");
- generateNumOfLinesFromGraphBuildResuiltBigFile(inFile, outFile, 1000);
- /* String inFile = "data/shortjump_1.head8M.fastq";
- String outFile = "data/testGeneFile";
- generateNumOfLinesFromGraphBuildResuiltBigFile(inFile, outFile, 100000);*/
- }
-}
diff --git a/genomix/genomix-pregelix/src/main/java/edu/uci/ics/genomix/pregelix/util/VertexUtil.java b/genomix/genomix-pregelix/src/main/java/edu/uci/ics/genomix/pregelix/util/VertexUtil.java
index 4582557..e2e7dfb 100644
--- a/genomix/genomix-pregelix/src/main/java/edu/uci/ics/genomix/pregelix/util/VertexUtil.java
+++ b/genomix/genomix-pregelix/src/main/java/edu/uci/ics/genomix/pregelix/util/VertexUtil.java
@@ -2,6 +2,7 @@
import edu.uci.ics.genomix.pregelix.io.AdjacencyListWritable;
import edu.uci.ics.genomix.pregelix.io.VertexValueWritable;
+import edu.uci.ics.genomix.type.KmerBytesWritable;
import edu.uci.ics.genomix.type.VKmerBytesWritable;
public class VertexUtil {
@@ -124,4 +125,5 @@
else
return null;
}
+
}
diff --git a/genomix/genomix-pregelix/src/test/java/edu/uci/ics/genomix/pregelix/JobGen/JobGenerator.java b/genomix/genomix-pregelix/src/test/java/edu/uci/ics/genomix/pregelix/JobGen/JobGenerator.java
index de2fcd3..98219d7 100644
--- a/genomix/genomix-pregelix/src/test/java/edu/uci/ics/genomix/pregelix/JobGen/JobGenerator.java
+++ b/genomix/genomix-pregelix/src/test/java/edu/uci/ics/genomix/pregelix/JobGen/JobGenerator.java
@@ -15,6 +15,9 @@
import edu.uci.ics.genomix.pregelix.operator.bubblemerge.BubbleMergeVertex;
import edu.uci.ics.genomix.pregelix.operator.pathmerge.P2ForPathMergeVertex;
import edu.uci.ics.genomix.pregelix.operator.pathmerge.MapReduceVertex;
+import edu.uci.ics.genomix.pregelix.operator.pathmerge.P4ForPathMergeVertex;
+import edu.uci.ics.genomix.pregelix.operator.removelowcoverage.RemoveLowCoverageVertex;
+import edu.uci.ics.genomix.pregelix.operator.scaffolding.ScaffoldingVertex;
import edu.uci.ics.genomix.pregelix.operator.splitrepeat.SplitRepeatVertex;
import edu.uci.ics.genomix.pregelix.operator.tipremove.TipAddVertex;
import edu.uci.ics.genomix.pregelix.operator.tipremove.TipRemoveVertex;
@@ -24,7 +27,23 @@
public class JobGenerator {
public static String outputBase = "src/test/resources/jobs/";
+
+ private static void generateMapReduceGraphJob(String jobName, String outputPath) throws IOException {
+ PregelixJob job = new PregelixJob(jobName);
+ job.setVertexClass(MapReduceVertex.class);
+ job.setVertexInputFormatClass(GraphCleanInputFormat.class);
+ job.setVertexOutputFormatClass(P2PathMergeOutputFormat.class);
+ job.setDynamicVertexValueSize(true);
+ job.setOutputKeyClass(VKmerBytesWritable.class);
+ job.setOutputValueClass(VertexValueWritable.class);
+ job.getConfiguration().setInt(MapReduceVertex.KMER_SIZE, 3);
+ job.getConfiguration().writeXml(new FileOutputStream(new File(outputPath)));
+ }
+ private static void genMapReduceGraph() throws IOException {
+ generateMapReduceGraphJob("MapReduceGraph", outputBase + "MapReduceGraph.xml");
+ }
+
// private static void generateNaiveAlgorithmForMergeGraphJob(String jobName, String outputPath) throws IOException {
// PregelixJob job = new PregelixJob(jobName);
// job.setVertexClass(P1ForPathMergeVertex.class);
@@ -77,54 +96,40 @@
// + "P3ForMergeGraph.xml");
// }
-// private static void generateP4ForMergeGraphJob(String jobName, String outputPath) throws IOException {
-// PregelixJob job = new PregelixJob(jobName);
-// job.setVertexClass(P4ForPathMergeVertex.class);
-// job.setVertexInputFormatClass(InitialGraphCleanInputFormat.class);
-// job.setVertexOutputFormatClass(GraphCleanOutputFormat.class);
-// job.setDynamicVertexValueSize(true);
-// job.setOutputKeyClass(KmerBytesWritable.class);
-// job.setOutputValueClass(VertexValueWritable.class);
-// job.getConfiguration().setInt(P4ForPathMergeVertex.KMER_SIZE, 3);
-// job.getConfiguration().writeXml(new FileOutputStream(new File(outputPath)));
-// }
-//
-// private static void genP4ForMergeGraph() throws IOException {
-// generateP4ForMergeGraphJob("P4ForMergeGraph", outputBase
-// + "P4ForMergeGraph.xml");
-// }
-
- private static void generateMapReduceGraphJob(String jobName, String outputPath) throws IOException {
+ private static void generateP4ForMergeGraphJob(String jobName, String outputPath) throws IOException {
PregelixJob job = new PregelixJob(jobName);
- job.setVertexClass(MapReduceVertex.class);
- job.setVertexInputFormatClass(GraphCleanInputFormat.class);
- job.setVertexOutputFormatClass(P2PathMergeOutputFormat.class);
- job.setDynamicVertexValueSize(true);
- job.setOutputKeyClass(VKmerBytesWritable.class);
- job.setOutputValueClass(VertexValueWritable.class);
- job.getConfiguration().setInt(MapReduceVertex.KMER_SIZE, 3);
- job.getConfiguration().writeXml(new FileOutputStream(new File(outputPath)));
- }
-
- private static void genMapReduceGraph() throws IOException {
- generateMapReduceGraphJob("MapReduceGraph", outputBase + "MapReduceGraph.xml");
- }
-
- private static void generateSplitRepeatGraphJob(String jobName, String outputPath) throws IOException {
- PregelixJob job = new PregelixJob(jobName);
- job.setVertexClass(SplitRepeatVertex.class);
+ job.setVertexClass(P4ForPathMergeVertex.class);
job.setVertexInputFormatClass(InitialGraphCleanInputFormat.class);
- job.setVertexOutputFormatClass(GraphCleanOutputFormat.class);
+ job.setVertexOutputFormatClass(GraphCleanOutputFormat.class);
job.setDynamicVertexValueSize(true);
job.setOutputKeyClass(VKmerBytesWritable.class);
job.setOutputValueClass(VertexValueWritable.class);
- job.getConfiguration().setInt(SplitRepeatVertex.KMER_SIZE, 3);
+ job.getConfiguration().setInt(P4ForPathMergeVertex.KMER_SIZE, 3);
job.getConfiguration().writeXml(new FileOutputStream(new File(outputPath)));
}
- private static void genSplitRepeatGraph() throws IOException {
- generateSplitRepeatGraphJob("SplitRepeatGraph", outputBase + "SplitRepeatGraph.xml");
+ private static void genP4ForMergeGraph() throws IOException {
+ generateP4ForMergeGraphJob("P4ForMergeGraph", outputBase
+ + "P4ForMergeGraph.xml");
}
+
+ private static void generateRemoveLowCoverageGraphJob(String jobName, String outputPath) throws IOException {
+ PregelixJob job = new PregelixJob(jobName);
+ job.setVertexClass(RemoveLowCoverageVertex.class);
+ job.setVertexInputFormatClass(GraphCleanInputFormat.class);
+ job.setVertexOutputFormatClass(GraphCleanOutputFormat.class);
+ job.setDynamicVertexValueSize(true);
+ job.setOutputKeyClass(VKmerBytesWritable.class);
+ job.setOutputValueClass(VertexValueWritable.class);
+ job.getConfiguration().setInt(RemoveLowCoverageVertex.KMER_SIZE, 3);
+ job.getConfiguration().writeXml(new FileOutputStream(new File(outputPath)));
+ }
+
+ private static void genRemoveLowCoverageGraph() throws IOException {
+ generateRemoveLowCoverageGraphJob("RemoveLowCoverageGraph", outputBase
+ + "RemoveLowCoverageGraph.xml");
+ }
+
private static void generateTipAddGraphJob(String jobName, String outputPath) throws IOException {
PregelixJob job = new PregelixJob(jobName);
job.setVertexClass(TipAddVertex.class);
@@ -159,6 +164,23 @@
+ "TipRemoveGraph.xml");
}
+ private static void generateSplitRepeatGraphJob(String jobName, String outputPath) throws IOException {
+ PregelixJob job = new PregelixJob(jobName);
+ job.setVertexClass(SplitRepeatVertex.class);
+ job.setVertexInputFormatClass(InitialGraphCleanInputFormat.class);
+ job.setVertexOutputFormatClass(GraphCleanOutputFormat.class);
+ job.setDynamicVertexValueSize(true);
+ job.setOutputKeyClass(VKmerBytesWritable.class);
+ job.setOutputValueClass(VertexValueWritable.class);
+ job.getConfiguration().setInt(SplitRepeatVertex.KMER_SIZE, 3);
+ job.getConfiguration().writeXml(new FileOutputStream(new File(outputPath)));
+ }
+
+ private static void genSplitRepeatGraph() throws IOException {
+ generateSplitRepeatGraphJob("SplitRepeatGraph", outputBase + "SplitRepeatGraph.xml");
+ }
+
+
private static void generateBridgeAddGraphJob(String jobName, String outputPath) throws IOException {
PregelixJob job = new PregelixJob(jobName);
job.setVertexClass(BridgeAddVertex.class);
@@ -227,14 +249,36 @@
+ "BubbleMergeGraph.xml");
}
+ private static void generateScaffoldingGraphJob(String jobName, String outputPath) throws IOException {
+ PregelixJob job = new PregelixJob(jobName);
+ job.setVertexClass(ScaffoldingVertex.class);
+ job.setVertexInputFormatClass(GraphCleanInputFormat.class);
+ job.setVertexOutputFormatClass(GraphCleanOutputFormat.class);
+ job.setDynamicVertexValueSize(true);
+ job.setOutputKeyClass(VKmerBytesWritable.class);
+ job.setOutputValueClass(VertexValueWritable.class);
+ job.getConfiguration().setInt(ScaffoldingVertex.KMER_SIZE, 3);
+ job.getConfiguration().writeXml(new FileOutputStream(new File(outputPath)));
+ }
+
+ private static void genScaffoldingGraph() throws IOException {
+ generateScaffoldingGraphJob("ScaffoldingGraph", outputBase
+ + "ScaffoldingGraph.xml");
+ }
+
public static void main(String[] args) throws IOException {
- genSplitRepeatGraph();
+ genMapReduceGraph();
+ genLogAlgorithmForMergeGraph();
+ genP4ForMergeGraph();
+ genRemoveLowCoverageGraph();
genTipAddGraph();
- genBridgeAddGraph();
genTipRemoveGraph();
+ genBridgeAddGraph();
genBridgeRemoveGraph();
genBubbleAddGraph();
genBubbleMergeGraph();
+ genSplitRepeatGraph();
+ genScaffoldingGraph();
}
}
diff --git a/genomix/genomix-pregelix/src/test/java/edu/uci/ics/genomix/pregelix/JobRun/RemoveLowCoverageSmallTestSuite.java b/genomix/genomix-pregelix/src/test/java/edu/uci/ics/genomix/pregelix/JobRun/RemoveLowCoverageSmallTestSuite.java
new file mode 100644
index 0000000..9a7d99e
--- /dev/null
+++ b/genomix/genomix-pregelix/src/test/java/edu/uci/ics/genomix/pregelix/JobRun/RemoveLowCoverageSmallTestSuite.java
@@ -0,0 +1,201 @@
+/*
+ * Copyright 2009-2010 by The Regents of the University of California
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * you may obtain a copy of the License from
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package edu.uci.ics.genomix.pregelix.JobRun;
+
+import java.io.BufferedReader;
+import java.io.DataOutputStream;
+import java.io.File;
+import java.io.FileNotFoundException;
+import java.io.FileOutputStream;
+import java.io.FileReader;
+import java.io.IOException;
+import java.util.ArrayList;
+import java.util.List;
+import java.util.logging.Logger;
+
+import junit.framework.Test;
+import junit.framework.TestResult;
+import junit.framework.TestSuite;
+
+import org.apache.commons.io.FileUtils;
+import org.apache.hadoop.conf.Configuration;
+import org.apache.hadoop.fs.FileSystem;
+import org.apache.hadoop.fs.Path;
+import org.apache.hadoop.hdfs.MiniDFSCluster;
+import org.apache.hadoop.mapred.JobConf;
+
+import edu.uci.ics.pregelix.core.jobgen.clusterconfig.ClusterConfig;
+import edu.uci.ics.pregelix.core.util.PregelixHyracksIntegrationUtil;
+
+@SuppressWarnings("deprecation")
+public class RemoveLowCoverageSmallTestSuite extends TestSuite {
+ private static final Logger LOGGER = Logger.getLogger(RemoveLowCoverageSmallTestSuite.class.getName());
+
+ public static final String PreFix = "data/PathMergeTestSet"; //"graphbuildresult";
+ public static final String[] TestDir = { PreFix + File.separator
+ + "5"};
+ private static final String ACTUAL_RESULT_DIR = "data/actual/removelowcoverage";
+ private static final String PATH_TO_HADOOP_CONF = "src/test/resources/hadoop/conf";
+ private static final String PATH_TO_CLUSTER_STORE = "src/test/resources/cluster/stores.properties";
+ private static final String PATH_TO_CLUSTER_PROPERTIES = "src/test/resources/cluster/cluster.properties";
+ private static final String PATH_TO_JOBS = "src/test/resources/jobs/";
+ private static final String PATH_TO_ONLY = "src/test/resources/only_removelowcoverage.txt";
+
+ public static final String HDFS_INPUTPATH = "/PathTestSet";
+
+ private static final String HADOOP_CONF_PATH = ACTUAL_RESULT_DIR + File.separator + "conf.xml";
+ private MiniDFSCluster dfsCluster;
+
+ private JobConf conf = new JobConf();
+ private int numberOfNC = 2;
+
+ public void setUp() throws Exception {
+ ClusterConfig.setStorePath(PATH_TO_CLUSTER_STORE);
+ ClusterConfig.setClusterPropertiesPath(PATH_TO_CLUSTER_PROPERTIES);
+ cleanupStores();
+ PregelixHyracksIntegrationUtil.init("src/test/resources/topology.xml");
+ LOGGER.info("Hyracks mini-cluster started");
+ FileUtils.forceMkdir(new File(ACTUAL_RESULT_DIR));
+ FileUtils.cleanDirectory(new File(ACTUAL_RESULT_DIR));
+ startHDFS();
+ }
+
+ private void startHDFS() throws IOException {
+ conf.addResource(new Path(PATH_TO_HADOOP_CONF + "/core-site.xml"));
+ conf.addResource(new Path(PATH_TO_HADOOP_CONF + "/mapred-site.xml"));
+ conf.addResource(new Path(PATH_TO_HADOOP_CONF + "/hdfs-site.xml"));
+ FileSystem lfs = FileSystem.getLocal(new Configuration());
+ lfs.delete(new Path("build"), true);
+ System.setProperty("hadoop.log.dir", "logs");
+ dfsCluster = new MiniDFSCluster(conf, numberOfNC, true, null);
+ FileSystem dfs = FileSystem.get(conf);
+
+ for (String testDir : TestDir) {
+ File src = new File(testDir);
+ Path dest = new Path(HDFS_INPUTPATH + File.separator + src.getName());
+ dfs.mkdirs(dest);
+ //src.listFiles()
+ //src.listFiles((FilenameFilter)(new WildcardFileFilter("part*")))
+ for (File f : src.listFiles()) {
+ dfs.copyFromLocalFile(new Path(f.getAbsolutePath()), dest);
+ }
+ }
+
+ DataOutputStream confOutput = new DataOutputStream(new FileOutputStream(new File(HADOOP_CONF_PATH)));
+ conf.writeXml(confOutput);
+ confOutput.flush();
+ confOutput.close();
+ }
+
+ private void cleanupStores() throws IOException {
+ FileUtils.forceMkdir(new File("teststore"));
+ FileUtils.forceMkdir(new File("build"));
+ FileUtils.cleanDirectory(new File("teststore"));
+ FileUtils.cleanDirectory(new File("build"));
+ }
+
+ /**
+ * cleanup hdfs cluster
+ */
+ private void cleanupHDFS() throws Exception {
+ dfsCluster.shutdown();
+ }
+
+ public void tearDown() throws Exception {
+ PregelixHyracksIntegrationUtil.deinit();
+ LOGGER.info("Hyracks mini-cluster shut down");
+ cleanupHDFS();
+ }
+
+ public static Test suite() throws Exception {
+ List<String> onlys = getFileList(PATH_TO_ONLY);
+ File testData = new File(PATH_TO_JOBS);
+ File[] queries = testData.listFiles();
+ RemoveLowCoverageSmallTestSuite testSuite = new RemoveLowCoverageSmallTestSuite();
+ testSuite.setUp();
+ boolean onlyEnabled = false;
+ FileSystem dfs = FileSystem.get(testSuite.conf);
+
+ if (onlys.size() > 0) {
+ onlyEnabled = true;
+ }
+
+ for (File qFile : queries) {
+ if (qFile.isFile()) {
+ if (onlyEnabled && !isInList(onlys, qFile.getName())) {
+ continue;
+ } else {
+ for (String testPathStr : TestDir) {
+ File testDir = new File(testPathStr);
+ String resultFileName = ACTUAL_RESULT_DIR + File.separator + jobExtToResExt(qFile.getName())
+ + File.separator + "bin" + File.separator + testDir.getName();
+ String textFileName = ACTUAL_RESULT_DIR + File.separator + jobExtToResExt(qFile.getName())
+ + File.separator + "txt" + File.separator + testDir.getName();
+ String graphvizFileName = ACTUAL_RESULT_DIR + File.separator + jobExtToResExt(qFile.getName())
+ + File.separator + "graphviz" + File.separator + testDir.getName();
+ testSuite.addTest(new BasicSmallTestCase(HADOOP_CONF_PATH, qFile.getName(), qFile
+ .getAbsolutePath().toString(), dfs,
+ HDFS_INPUTPATH + File.separator + testDir.getName(), resultFileName, textFileName, graphvizFileName));
+ }
+ }
+ }
+ }
+ return testSuite;
+ }
+
+ /**
+ * Runs the tests and collects their result in a TestResult.
+ */
+ @Override
+ public void run(TestResult result) {
+ try {
+ int testCount = countTestCases();
+ for (int i = 0; i < testCount; i++) {
+ // cleanupStores();
+ Test each = this.testAt(i);
+ if (result.shouldStop())
+ break;
+ runTest(each, result);
+ }
+ tearDown();
+ } catch (Exception e) {
+ throw new IllegalStateException(e);
+ }
+ }
+
+ protected static List<String> getFileList(String ignorePath) throws FileNotFoundException, IOException {
+ BufferedReader reader = new BufferedReader(new FileReader(ignorePath));
+ String s = null;
+ List<String> ignores = new ArrayList<String>();
+ while ((s = reader.readLine()) != null) {
+ ignores.add(s);
+ }
+ reader.close();
+ return ignores;
+ }
+
+ private static String jobExtToResExt(String fname) {
+ int dot = fname.lastIndexOf('.');
+ return fname.substring(0, dot);
+ }
+
+ private static boolean isInList(List<String> onlys, String name) {
+ for (String only : onlys)
+ if (name.indexOf(only) >= 0)
+ return true;
+ return false;
+ }
+
+}
diff --git a/genomix/genomix-pregelix/src/test/java/edu/uci/ics/genomix/pregelix/JobRun/ScaffoldingSmallTestSuite.java b/genomix/genomix-pregelix/src/test/java/edu/uci/ics/genomix/pregelix/JobRun/ScaffoldingSmallTestSuite.java
new file mode 100644
index 0000000..c8d12dc
--- /dev/null
+++ b/genomix/genomix-pregelix/src/test/java/edu/uci/ics/genomix/pregelix/JobRun/ScaffoldingSmallTestSuite.java
@@ -0,0 +1,201 @@
+/*
+ * Copyright 2009-2010 by The Regents of the University of California
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * you may obtain a copy of the License from
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package edu.uci.ics.genomix.pregelix.JobRun;
+
+import java.io.BufferedReader;
+import java.io.DataOutputStream;
+import java.io.File;
+import java.io.FileNotFoundException;
+import java.io.FileOutputStream;
+import java.io.FileReader;
+import java.io.IOException;
+import java.util.ArrayList;
+import java.util.List;
+import java.util.logging.Logger;
+
+import junit.framework.Test;
+import junit.framework.TestResult;
+import junit.framework.TestSuite;
+
+import org.apache.commons.io.FileUtils;
+import org.apache.hadoop.conf.Configuration;
+import org.apache.hadoop.fs.FileSystem;
+import org.apache.hadoop.fs.Path;
+import org.apache.hadoop.hdfs.MiniDFSCluster;
+import org.apache.hadoop.mapred.JobConf;
+
+import edu.uci.ics.pregelix.core.jobgen.clusterconfig.ClusterConfig;
+import edu.uci.ics.pregelix.core.util.PregelixHyracksIntegrationUtil;
+
+@SuppressWarnings("deprecation")
+public class ScaffoldingSmallTestSuite extends TestSuite {
+ private static final Logger LOGGER = Logger.getLogger(ScaffoldingSmallTestSuite.class.getName());
+ //P4ForMergeGraph/bin/read
+ public static final String PreFix = "data/actual/pathmerge/P4ForMergeGraph/bin";
+ public static final String[] TestDir = { PreFix + File.separator
+ + "2"};
+ private static final String ACTUAL_RESULT_DIR = "data/actual/scaffolding";
+ private static final String PATH_TO_HADOOP_CONF = "src/test/resources/hadoop/conf";
+ private static final String PATH_TO_CLUSTER_STORE = "src/test/resources/cluster/stores.properties";
+ private static final String PATH_TO_CLUSTER_PROPERTIES = "src/test/resources/cluster/cluster.properties";
+ private static final String PATH_TO_JOBS = "src/test/resources/jobs/";
+ private static final String PATH_TO_ONLY = "src/test/resources/only_scaffolding.txt";
+
+ public static final String HDFS_INPUTPATH = "/PathTestSet";
+
+ private static final String HADOOP_CONF_PATH = ACTUAL_RESULT_DIR + File.separator + "conf.xml";
+ private MiniDFSCluster dfsCluster;
+
+ private JobConf conf = new JobConf();
+ private int numberOfNC = 1;
+
+ public void setUp() throws Exception {
+ ClusterConfig.setStorePath(PATH_TO_CLUSTER_STORE);
+ ClusterConfig.setClusterPropertiesPath(PATH_TO_CLUSTER_PROPERTIES);
+ cleanupStores();
+ PregelixHyracksIntegrationUtil.init("src/test/resources/topology.xml");
+ LOGGER.info("Hyracks mini-cluster started");
+ FileUtils.forceMkdir(new File(ACTUAL_RESULT_DIR));
+ FileUtils.cleanDirectory(new File(ACTUAL_RESULT_DIR));
+ startHDFS();
+ }
+
+ private void startHDFS() throws IOException {
+ conf.addResource(new Path(PATH_TO_HADOOP_CONF + "/core-site.xml"));
+ conf.addResource(new Path(PATH_TO_HADOOP_CONF + "/mapred-site.xml"));
+ conf.addResource(new Path(PATH_TO_HADOOP_CONF + "/hdfs-site.xml"));
+ FileSystem lfs = FileSystem.getLocal(new Configuration());
+ lfs.delete(new Path("build"), true);
+ System.setProperty("hadoop.log.dir", "logs");
+ dfsCluster = new MiniDFSCluster(conf, numberOfNC, true, null);
+ FileSystem dfs = FileSystem.get(conf);
+
+ for (String testDir : TestDir) {
+ File src = new File(testDir);
+ Path dest = new Path(HDFS_INPUTPATH + File.separator + src.getName());
+ dfs.mkdirs(dest);
+ //src.listFiles()
+ //src.listFiles((FilenameFilter)(new WildcardFileFilter("part*")))
+ for (File f : src.listFiles()) {
+ dfs.copyFromLocalFile(new Path(f.getAbsolutePath()), dest);
+ }
+ }
+
+ DataOutputStream confOutput = new DataOutputStream(new FileOutputStream(new File(HADOOP_CONF_PATH)));
+ conf.writeXml(confOutput);
+ confOutput.flush();
+ confOutput.close();
+ }
+
+ private void cleanupStores() throws IOException {
+ FileUtils.forceMkdir(new File("teststore"));
+ FileUtils.forceMkdir(new File("build"));
+ FileUtils.cleanDirectory(new File("teststore"));
+ FileUtils.cleanDirectory(new File("build"));
+ }
+
+ /**
+ * cleanup hdfs cluster
+ */
+ private void cleanupHDFS() throws Exception {
+ dfsCluster.shutdown();
+ }
+
+ public void tearDown() throws Exception {
+ PregelixHyracksIntegrationUtil.deinit();
+ LOGGER.info("Hyracks mini-cluster shut down");
+ cleanupHDFS();
+ }
+
+ public static Test suite() throws Exception {
+ List<String> onlys = getFileList(PATH_TO_ONLY);
+ File testData = new File(PATH_TO_JOBS);
+ File[] queries = testData.listFiles();
+ ScaffoldingSmallTestSuite testSuite = new ScaffoldingSmallTestSuite();
+ testSuite.setUp();
+ boolean onlyEnabled = false;
+ FileSystem dfs = FileSystem.get(testSuite.conf);
+
+ if (onlys.size() > 0) {
+ onlyEnabled = true;
+ }
+
+ for (File qFile : queries) {
+ if (qFile.isFile()) {
+ if (onlyEnabled && !isInList(onlys, qFile.getName())) {
+ continue;
+ } else {
+ for (String testPathStr : TestDir) {
+ File testDir = new File(testPathStr);
+ String resultFileName = ACTUAL_RESULT_DIR + File.separator + jobExtToResExt(qFile.getName())
+ + File.separator + "bin" + File.separator + testDir.getName();
+ String textFileName = ACTUAL_RESULT_DIR + File.separator + jobExtToResExt(qFile.getName())
+ + File.separator + "txt" + File.separator + testDir.getName();
+ String graphvizFileName = ACTUAL_RESULT_DIR + File.separator + jobExtToResExt(qFile.getName())
+ + File.separator + "graphviz" + File.separator + testDir.getName();
+ testSuite.addTest(new BasicSmallTestCase(HADOOP_CONF_PATH, qFile.getName(), qFile
+ .getAbsolutePath().toString(), dfs,
+ HDFS_INPUTPATH + File.separator + testDir.getName(), resultFileName, textFileName, graphvizFileName));
+ }
+ }
+ }
+ }
+ return testSuite;
+ }
+
+ /**
+ * Runs the tests and collects their result in a TestResult.
+ */
+ @Override
+ public void run(TestResult result) {
+ try {
+ int testCount = countTestCases();
+ for (int i = 0; i < testCount; i++) {
+ // cleanupStores();
+ Test each = this.testAt(i);
+ if (result.shouldStop())
+ break;
+ runTest(each, result);
+ }
+ tearDown();
+ } catch (Exception e) {
+ throw new IllegalStateException(e);
+ }
+ }
+
+ protected static List<String> getFileList(String ignorePath) throws FileNotFoundException, IOException {
+ BufferedReader reader = new BufferedReader(new FileReader(ignorePath));
+ String s = null;
+ List<String> ignores = new ArrayList<String>();
+ while ((s = reader.readLine()) != null) {
+ ignores.add(s);
+ }
+ reader.close();
+ return ignores;
+ }
+
+ private static String jobExtToResExt(String fname) {
+ int dot = fname.lastIndexOf('.');
+ return fname.substring(0, dot);
+ }
+
+ private static boolean isInList(List<String> onlys, String name) {
+ for (String only : onlys)
+ if (name.indexOf(only) >= 0)
+ return true;
+ return false;
+ }
+
+}
diff --git a/genomix/genomix-pregelix/src/test/java/edu/uci/ics/genomix/pregelix/JobRun/SplitRepeatSmallTestSuite.java b/genomix/genomix-pregelix/src/test/java/edu/uci/ics/genomix/pregelix/JobRun/SplitRepeatSmallTestSuite.java
index 43f4788..e3a33fa 100644
--- a/genomix/genomix-pregelix/src/test/java/edu/uci/ics/genomix/pregelix/JobRun/SplitRepeatSmallTestSuite.java
+++ b/genomix/genomix-pregelix/src/test/java/edu/uci/ics/genomix/pregelix/JobRun/SplitRepeatSmallTestSuite.java
@@ -43,9 +43,10 @@
public class SplitRepeatSmallTestSuite extends TestSuite {
private static final Logger LOGGER = Logger.getLogger(SplitRepeatSmallTestSuite.class.getName());
//P4ForMergeGraph/bin/read
- public static final String PreFix = "data/SplitRepeat"; //"graphbuildresult";
+ public static final String PreFix = "data/SplitRepeat";
public static final String[] TestDir = { PreFix + File.separator
- + "AdjSplitRepeat"};
+ + "SplitOnce", PreFix + File.separator
+ + "SplitTwice"};
private static final String ACTUAL_RESULT_DIR = "data/actual/splitrepeat";
private static final String PATH_TO_HADOOP_CONF = "src/test/resources/hadoop/conf";
private static final String PATH_TO_CLUSTER_STORE = "src/test/resources/cluster/stores.properties";
diff --git a/genomix/genomix-pregelix/src/test/resources/only_bubbleadd.txt b/genomix/genomix-pregelix/src/test/resources/only_bubbleadd.txt
new file mode 100644
index 0000000..a4c7fc8
--- /dev/null
+++ b/genomix/genomix-pregelix/src/test/resources/only_bubbleadd.txt
@@ -0,0 +1 @@
+BubbleAddGraph.xml
diff --git a/genomix/genomix-pregelix/src/test/resources/only_pathmerge.txt b/genomix/genomix-pregelix/src/test/resources/only_pathmerge.txt
index 5a15ca0..3d007d2 100644
--- a/genomix/genomix-pregelix/src/test/resources/only_pathmerge.txt
+++ b/genomix/genomix-pregelix/src/test/resources/only_pathmerge.txt
@@ -1 +1 @@
-LogAlgorithmForMergeGraph.xml
+P4ForMergeGraph.xml
diff --git a/genomix/genomix-pregelix/src/test/resources/only_removelowcoverage.txt b/genomix/genomix-pregelix/src/test/resources/only_removelowcoverage.txt
new file mode 100644
index 0000000..77ff8f0
--- /dev/null
+++ b/genomix/genomix-pregelix/src/test/resources/only_removelowcoverage.txt
@@ -0,0 +1 @@
+RemoveLowCoverageGraph.xml
diff --git a/genomix/genomix-pregelix/src/test/resources/only_scaffolding.txt b/genomix/genomix-pregelix/src/test/resources/only_scaffolding.txt
new file mode 100644
index 0000000..fed8efd
--- /dev/null
+++ b/genomix/genomix-pregelix/src/test/resources/only_scaffolding.txt
@@ -0,0 +1 @@
+ScaffoldingGraph.xml