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