add vertex.activate() to notice update and change DirectionFlag to 2 bits
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 4936d17..d0d1ce9 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
@@ -308,8 +308,8 @@
outFlag |= MessageFlag.DIR_FF;
else if(getVertexValue().getFRList().getCountOfPosition() > 0)
outFlag |= MessageFlag.DIR_FR;
- else
- outFlag |= MessageFlag.DIR_NO;
+// else
+// outFlag |= MessageFlag.DIR_NO;
}
/**
@@ -321,8 +321,8 @@
outFlag |= MessageFlag.DIR_RF;
else if(getVertexValue().getRRList().getCountOfPosition() > 0)
outFlag |= MessageFlag.DIR_RR;
- else
- outFlag |= MessageFlag.DIR_NO;
+// else
+// outFlag |= MessageFlag.DIR_NO;
}
/**
@@ -334,24 +334,26 @@
outFlag |= MessageFlag.IS_HEAD;
switch(getVertexValue().getState() & State.SHOULD_MERGE_MASK){
case State.SHOULD_MERGEWITHPREV:
- setSuccessorAdjMsg();
- if(ifFlipWithPredecessor())
- outgoingMsg.setFlip(true);
- outgoingMsg.setFlag(outFlag);
- outgoingMsg.setNeighberNode(getVertexValue().getIncomingList());
- outgoingMsg.setSourceVertexId(getVertexId());
- if(getNextDestVertexId(getVertexValue()) != null)
+ if(getNextDestVertexId(getVertexValue()) != null){
+ setSuccessorAdjMsg();
+ if(ifFlipWithPredecessor())
+ outgoingMsg.setFlip(true);
+ outgoingMsg.setFlag(outFlag);
+ outgoingMsg.setNeighberNode(getVertexValue().getIncomingList());
+ outgoingMsg.setSourceVertexId(getVertexId());
sendMsg(getNextDestVertexId(getVertexValue()), outgoingMsg);
+ }
break;
case State.SHOULD_MERGEWITHNEXT:
- setPredecessorAdjMsg();
- if(ifFilpWithSuccessor())
- outgoingMsg.setFlip(true);
- outgoingMsg.setFlag(outFlag);
- outgoingMsg.setNeighberNode(getVertexValue().getOutgoingList());
- outgoingMsg.setSourceVertexId(getVertexId());
- if(getPrevDestVertexId(getVertexValue()) != null)
+ if(getPrevDestVertexId(getVertexValue()) != null){
+ setPredecessorAdjMsg();
+ if(ifFilpWithSuccessor())
+ outgoingMsg.setFlip(true);
+ outgoingMsg.setFlag(outFlag);
+ outgoingMsg.setNeighberNode(getVertexValue().getOutgoingList());
+ outgoingMsg.setSourceVertexId(getVertexId());
sendMsg(getPrevDestVertexId(getVertexValue()), outgoingMsg);
+ }
break;
}
}
diff --git a/genomix/genomix-pregelix/src/main/java/edu/uci/ics/genomix/pregelix/operator/pathmerge/P4ForPathMergeVertex.java b/genomix/genomix-pregelix/src/main/java/edu/uci/ics/genomix/pregelix/operator/pathmerge/P4ForPathMergeVertex.java
index 28d0563..a6ebb27 100644
--- a/genomix/genomix-pregelix/src/main/java/edu/uci/ics/genomix/pregelix/operator/pathmerge/P4ForPathMergeVertex.java
+++ b/genomix/genomix-pregelix/src/main/java/edu/uci/ics/genomix/pregelix/operator/pathmerge/P4ForPathMergeVertex.java
@@ -160,7 +160,6 @@
curHead = isNodeRandomHead(curKmer);
-
// the headFlag and tailFlag's indicate if the node is at the beginning or end of a simple path.
// We prevent merging towards non-path nodes
hasNext = setNextInfo(getVertexValue());//&& headFlag == 0;
@@ -198,12 +197,14 @@
}
}
}
+ this.activate();
}
else if (getSuperstep() % 4 == 0){
//update neighber
while (msgIterator.hasNext()) {
incomingMsg = msgIterator.next();
processUpdate();
+ this.activate();
if(VertexUtil.isHeadOrRearVertexWithDegree(getVertexValue()))
voteToHalt();
}
@@ -216,7 +217,7 @@
incomingMsg = msgIterator.next();
selfFlag = (byte) (State.VERTEX_MASK & getVertexValue().getState());
processMerge();
-
+ this.activate();
//head meets head, stop
if(getMsgFlag() == MessageFlag.IS_HEAD && selfFlag == MessageFlag.IS_HEAD)
voteToHalt();
diff --git a/genomix/genomix-pregelix/src/main/java/edu/uci/ics/genomix/pregelix/type/DirectionFlag.java b/genomix/genomix-pregelix/src/main/java/edu/uci/ics/genomix/pregelix/type/DirectionFlag.java
index 51a73f1..4785205 100644
--- a/genomix/genomix-pregelix/src/main/java/edu/uci/ics/genomix/pregelix/type/DirectionFlag.java
+++ b/genomix/genomix-pregelix/src/main/java/edu/uci/ics/genomix/pregelix/type/DirectionFlag.java
@@ -3,7 +3,7 @@
import edu.uci.ics.genomix.pregelix.io.VertexValueWritable.State;
public class DirectionFlag extends State {
- public static final byte DIR_NO = 0b000 << 0;
+// public static final byte DIR_NO = 0b000 << 0;
public static final byte DIR_FF = 0b001 << 0;
public static final byte DIR_FR = 0b010 << 0;
public static final byte DIR_RF = 0b011 << 0;
diff --git a/genomix/genomix-pregelix/src/test/resources/only_pathmerge.txt b/genomix/genomix-pregelix/src/test/resources/only_pathmerge.txt
index 3d007d2..5a15ca0 100644
--- a/genomix/genomix-pregelix/src/test/resources/only_pathmerge.txt
+++ b/genomix/genomix-pregelix/src/test/resources/only_pathmerge.txt
@@ -1 +1 @@
-P4ForMergeGraph.xml
+LogAlgorithmForMergeGraph.xml