use byte to check isCycle
diff --git a/genomix/genomix-pregelix/src/main/java/edu/uci/ics/genomix/pregelix/operator/LogAlgorithmForPathMergeVertex.java b/genomix/genomix-pregelix/src/main/java/edu/uci/ics/genomix/pregelix/operator/LogAlgorithmForPathMergeVertex.java
index a12c852..61f70e3 100644
--- a/genomix/genomix-pregelix/src/main/java/edu/uci/ics/genomix/pregelix/operator/LogAlgorithmForPathMergeVertex.java
+++ b/genomix/genomix-pregelix/src/main/java/edu/uci/ics/genomix/pregelix/operator/LogAlgorithmForPathMergeVertex.java
@@ -13,7 +13,7 @@
 import edu.uci.ics.genomix.pregelix.io.ValueStateWritable;
 import edu.uci.ics.genomix.pregelix.type.Message;
 import edu.uci.ics.genomix.pregelix.type.State;
-import edu.uci.ics.genomix.pregelix.util.GraphVertexOperation;
+import edu.uci.ics.genomix.pregelix.util.VertexUtil;
 import edu.uci.ics.genomix.type.GeneCode;
 import edu.uci.ics.genomix.type.KmerBytesWritable;
 import edu.uci.ics.genomix.type.VKmerBytesWritable;
@@ -111,12 +111,12 @@
 	 * start sending message 
 	 */
 	public void startSendMsg(){
-		if(GraphVertexOperation.isHeadVertex(getVertexValue().getAdjMap())){
+		if(VertexUtil.isHeadVertex(getVertexValue().getAdjMap())){
 			outgoingMsg.setMessage(Message.START);
 			sendMsgToAllNextNodes(getVertexId(), getVertexValue().getAdjMap());
 			voteToHalt();
 		}
-		if(GraphVertexOperation.isRearVertex(getVertexValue().getAdjMap())){
+		if(VertexUtil.isRearVertex(getVertexValue().getAdjMap())){
 			outgoingMsg.setMessage(Message.END);
 			sendMsgToAllPreviousNodes(getVertexId(), getVertexValue().getAdjMap());
 			voteToHalt();
@@ -127,7 +127,7 @@
 	 */
 	public void initState(Iterator<LogAlgorithmMessageWritable> msgIterator){
 		while(msgIterator.hasNext()){
-			if(!GraphVertexOperation.isPathVertex(getVertexValue().getAdjMap())){
+			if(!VertexUtil.isPathVertex(getVertexValue().getAdjMap())){
 				msgIterator.next();
 				voteToHalt();
 			}
@@ -225,9 +225,9 @@
 				incomingMsg.getChainVertexId()));
 		chainVertexId.set(kmerFactory.mergeTwoKmer(getVertexValue().getMergeChain(), 
 				lastKmer));
-		if(GraphVertexOperation.isCycle(getVertexId(), chainVertexId)){
+		if(VertexUtil.isCycle(getVertexId(), chainVertexId, kmerSize)){
 			getVertexValue().setMergeChain(null);
-			getVertexValue().setAdjMap(GraphVertexOperation.reverseAdjMap(getVertexValue().getAdjMap(),
+			getVertexValue().setAdjMap(VertexUtil.reverseAdjMap(getVertexValue().getAdjMap(),
 					chainVertexId.getGeneCodeAtPosition(kmerSize)));
 			getVertexValue().setState(State.CYCLE);
 			return false;
@@ -235,7 +235,7 @@
 		else
 			getVertexValue().setMergeChain(chainVertexId);
 		
-		byte tmpVertexValue = GraphVertexOperation.updateRightNeighber(getVertexValue().getAdjMap(),
+		byte tmpVertexValue = VertexUtil.updateRightNeighber(getVertexValue().getAdjMap(),
 				incomingMsg.getAdjMap());
 		getVertexValue().setAdjMap(tmpVertexValue);
 		return true;
diff --git a/genomix/genomix-pregelix/src/main/java/edu/uci/ics/genomix/pregelix/operator/NaiveAlgorithmForPathMergeVertex.java b/genomix/genomix-pregelix/src/main/java/edu/uci/ics/genomix/pregelix/operator/NaiveAlgorithmForPathMergeVertex.java
index c0f3f77..7d51670 100644
--- a/genomix/genomix-pregelix/src/main/java/edu/uci/ics/genomix/pregelix/operator/NaiveAlgorithmForPathMergeVertex.java
+++ b/genomix/genomix-pregelix/src/main/java/edu/uci/ics/genomix/pregelix/operator/NaiveAlgorithmForPathMergeVertex.java
@@ -17,7 +17,7 @@
 import edu.uci.ics.genomix.pregelix.io.ValueStateWritable;
 import edu.uci.ics.genomix.pregelix.type.Message;
 import edu.uci.ics.genomix.pregelix.type.State;
-import edu.uci.ics.genomix.pregelix.util.GraphVertexOperation;
+import edu.uci.ics.genomix.pregelix.util.VertexUtil;
 
 /*
  * vertexId: BytesWritable
@@ -110,11 +110,11 @@
 	 * start sending message 
 	 */
 	public void startSendMsg(){
-		if(GraphVertexOperation.isHeadVertex(getVertexValue().getAdjMap())){
+		if(VertexUtil.isHeadVertex(getVertexValue().getAdjMap())){
 			outgoingMsg.setMessage(Message.START);
 			sendMsgToAllNextNodes(getVertexId(), getVertexValue().getAdjMap());
 		}
-		if(GraphVertexOperation.isRearVertex(getVertexValue().getAdjMap())){
+		if(VertexUtil.isRearVertex(getVertexValue().getAdjMap())){
 			outgoingMsg.setMessage(Message.END);
 			sendMsgToAllPreviousNodes(getVertexId(), getVertexValue().getAdjMap());
 		}
@@ -124,7 +124,7 @@
 	 */
 	public void initState(Iterator<NaiveAlgorithmMessageWritable> msgIterator){
 		while(msgIterator.hasNext()){
-			if(!GraphVertexOperation.isPathVertex(getVertexValue().getAdjMap())){
+			if(!VertexUtil.isPathVertex(getVertexValue().getAdjMap())){
 				msgIterator.next();
 				voteToHalt();
 			}
@@ -173,7 +173,7 @@
 				else{
 					getVertexValue().setMergeChain(kmerFactory.mergeKmerWithNextCode(getVertexValue().getMergeChain(),
 							incomingMsg.getLastGeneCode()));
-					byte adjMap = GraphVertexOperation.updateRightNeighber(getVertexValue().getAdjMap(),
+					byte adjMap = VertexUtil.updateRightNeighber(getVertexValue().getAdjMap(),
 							incomingMsg.getAdjMap());
 					getVertexValue().setAdjMap(adjMap);
 					getVertexValue().setState(State.FINAL_VERTEX);
diff --git a/genomix/genomix-pregelix/src/main/java/edu/uci/ics/genomix/pregelix/util/GraphVertexOperation.java b/genomix/genomix-pregelix/src/main/java/edu/uci/ics/genomix/pregelix/util/VertexUtil.java
similarity index 72%
rename from genomix/genomix-pregelix/src/main/java/edu/uci/ics/genomix/pregelix/util/GraphVertexOperation.java
rename to genomix/genomix-pregelix/src/main/java/edu/uci/ics/genomix/pregelix/util/VertexUtil.java
index f086df4..abdc8fd 100644
--- a/genomix/genomix-pregelix/src/main/java/edu/uci/ics/genomix/pregelix/util/GraphVertexOperation.java
+++ b/genomix/genomix-pregelix/src/main/java/edu/uci/ics/genomix/pregelix/util/VertexUtil.java
@@ -1,10 +1,14 @@
 package edu.uci.ics.genomix.pregelix.util;
 
+import edu.uci.ics.genomix.pregelix.operator.NaiveAlgorithmForPathMergeVertex;
 import edu.uci.ics.genomix.type.GeneCode;
 import edu.uci.ics.genomix.type.KmerBytesWritable;
 import edu.uci.ics.genomix.type.VKmerBytesWritable;
+import edu.uci.ics.genomix.type.VKmerBytesWritableFactory;
 
-public class GraphVertexOperation {
+public class VertexUtil {
+	private static VKmerBytesWritableFactory kmerFactory = new VKmerBytesWritableFactory(
+			NaiveAlgorithmForPathMergeVertex.kmerSize);
 	/**
 	 * Single Vertex: in-degree = out-degree = 1
 	 * @param vertexValue 
@@ -50,11 +54,14 @@
 	/**
 	 * check if mergeChain is cycle
 	 */
-	public static boolean isCycle(KmerBytesWritable vertexId, VKmerBytesWritable mergeChain){
-		String chain = mergeChain.toString().substring(1);
-		if(chain.contains(vertexId.toString()))
-			return true;
-		return false;
+	public static boolean isCycle(KmerBytesWritable vertexId, VKmerBytesWritable mergeChain, int kmerSize){
+        VKmerBytesWritable subKmer;
+        for(int istart = 1; istart < mergeChain.getKmerLength() - kmerSize; istart++) {
+        	subKmer = kmerFactory.getSubKmerFromChain(istart, kmerSize, mergeChain);
+            if(subKmer.equals(vertexId))
+            	return true;
+        }
+        return false;
 	}
 	/**
 	 * reverse neighber
diff --git a/genomix/genomix-pregelix/src/test/java/edu/uci/ics/genomix/pregelix/JobRun/PathMergeSmallTestCase.java b/genomix/genomix-pregelix/src/test/java/edu/uci/ics/genomix/pregelix/JobRun/PathMergeSmallTestCase.java
index 1acf79b..818a550 100644
--- a/genomix/genomix-pregelix/src/test/java/edu/uci/ics/genomix/pregelix/JobRun/PathMergeSmallTestCase.java
+++ b/genomix/genomix-pregelix/src/test/java/edu/uci/ics/genomix/pregelix/JobRun/PathMergeSmallTestCase.java
@@ -78,8 +78,6 @@
 		dfs.copyToLocalFile(FileOutputFormat.getOutputPath(job), new Path(
 				resultFileDir));
 		GenerateTextFile.generateFromPathmergeResult(5, resultFileDir, textFileDir);
-		// TestUtils.compareWithResultDir(new File(expectedFileDir), new
-		// File(resultFileDir));
 	}
 
 	public String toString() {
diff --git a/genomix/genomix-pregelix/src/test/java/edu/uci/ics/genomix/pregelix/JobRun/PathMergeSmallTestSuite.java b/genomix/genomix-pregelix/src/test/java/edu/uci/ics/genomix/pregelix/JobRun/PathMergeSmallTestSuite.java
index 956a646..5c6259e 100644
--- a/genomix/genomix-pregelix/src/test/java/edu/uci/ics/genomix/pregelix/JobRun/PathMergeSmallTestSuite.java
+++ b/genomix/genomix-pregelix/src/test/java/edu/uci/ics/genomix/pregelix/JobRun/PathMergeSmallTestSuite.java
@@ -47,8 +47,8 @@
 	public static final String PreFix = "data/PathTestSet"; //"graphbuildresult";
 	public static final String[] TestDir = { PreFix + File.separator
 		//+  "split.aa"};
-		///+ "split.aa"};/*, PreFix + File.separator
-		/*+ "CyclePath", PreFix + File.separator
+		//+ "split.aa"};/*, PreFix + File.separator
+		/*+ "CyclePath"};, PreFix + File.separator
 		+ "SimplePath", PreFix + File.separator
 		+ "SinglePath", PreFix + File.separator
 		+ "TreePath"};*/
diff --git a/genomix/genomix-pregelix/src/test/java/edu/uci/ics/genomix/pregelix/pathmerge/MergePathTest.java b/genomix/genomix-pregelix/src/test/java/edu/uci/ics/genomix/pregelix/pathmerge/MergePathTest.java
index afd2477..cb43b72 100644
--- a/genomix/genomix-pregelix/src/test/java/edu/uci/ics/genomix/pregelix/pathmerge/MergePathTest.java
+++ b/genomix/genomix-pregelix/src/test/java/edu/uci/ics/genomix/pregelix/pathmerge/MergePathTest.java
@@ -19,16 +19,14 @@
 
 public class MergePathTest {
 	public static final String PATH_TO_TESTSTORE = "testcase/pathmerge/"; 
-	//"genomix_result/pathmerge/new_naive";
-	public static final String NAIVE_DATA_INPUT = "genomix_result/P1_nc8";//"actual/NaiveAlgorithmForMergeGraph/BinaryOutput/test";
-	//"genomix_result/pathmerge/new_log";
-	public static final String LOG_DATA_INPUT = "genomix_result/P2_nc8";//"actual/TwoStepLogAlgorithmForMergeGraph/BinaryOutput/test";
+	public static final String NAIVE_DATA_INPUT = "genomix_result/p1_nc8_4vertex";
+	public static final String LOG_DATA_INPUT = "genomix_result/p2_nc8_4vertex";
 	public static final String TEXT_OUTPUT = PATH_TO_TESTSTORE + "textfile";
 	public static final String CHAIN_OUTPUT = PATH_TO_TESTSTORE + "chain";
 	
 	private static int nc = 8;
 	private static int kmerSize = 55;
-	private static int maxLength = 102; 
+	//private static int maxLength = 102; 
 	
 	@Test
 	public void test() throws Exception {
@@ -58,14 +56,14 @@
 				if (key == null || value == null){
 					break;
 				}
-				//if(value.getState() == State.FINAL_VERTEX){
-					/*bw.write(value.getMergeChain().toString()
+				if(value.getState() == State.FINAL_VERTEX){
+					bw.write(value.getMergeChain().toString()
 							+ "\t" + GeneCode.getSymbolFromBitMap(value.getAdjMap()));
-					bw.newLine();*/
-					bw.write(key.toString()
-							+ "\t" + value.toString());
 					bw.newLine();
-				//}
+					/*bw.write(key.toString()
+							+ "\t" + value.toString());
+					bw.newLine();*/
+				}
 				//if(value.getLengthOfMergeChain() != 0
 				//		&& value.getLengthOfMergeChain() != -1
 				//		&& value.getState() == State.FINAL_VERTEX){