Simplifying all the setSateAsMergeDir
diff --git a/genomix/genomix-pregelix/src/main/java/edu/uci/ics/genomix/pregelix/operator/pathmerge/BasicPathMergeVertex.java b/genomix/genomix-pregelix/src/main/java/edu/uci/ics/genomix/pregelix/operator/pathmerge/BasicPathMergeVertex.java
index 01a0f25..d9c3dfc 100644
--- a/genomix/genomix-pregelix/src/main/java/edu/uci/ics/genomix/pregelix/operator/pathmerge/BasicPathMergeVertex.java
+++ b/genomix/genomix-pregelix/src/main/java/edu/uci/ics/genomix/pregelix/operator/pathmerge/BasicPathMergeVertex.java
@@ -15,6 +15,14 @@
public abstract class BasicPathMergeVertex<V extends VertexValueWritable, M extends PathMergeMessageWritable> extends
BasicGraphCleanVertex<V, M>{
+ public void setStateAsMergeDir(boolean mergeWithPre){
+ short state = getVertexValue().getState();
+ state &= State.CAN_MERGE_CLEAR;
+ state |= mergeWithPre ? State.CAN_MERGEWITHPREV : State.CAN_MERGEWITHNEXT;
+ getVertexValue().setState(state);
+ activate();
+ }
+
public void setStateAsMergeWithPrev(){
short state = getVertexValue().getState();
state &= State.CAN_MERGE_CLEAR;
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 771462c..d8859b1 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
@@ -26,6 +26,8 @@
private static final boolean isP4 = true;
private static final boolean toPredecessor = true;
private static final boolean toSuccessor = false;
+ private static final boolean mergeWithPrev = true;
+ private static final boolean mergeWithNext = false;
private static long randSeed = 1; //static for save memory
private float probBeingRandomHead = -1;
@@ -137,19 +139,21 @@
// 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()); // TODO make this false if the node is restricted by its neighbors or by structure
+ hasNext = setNextInfo(getVertexValue()); // TODO make this false if the node is restricted by its neighbors or by structure(when you combine steps 2 and 3)
hasPrev = setPrevInfo(getVertexValue());
if (hasNext || hasPrev) {
if (curHead) {
if (hasNext && !nextHead) {
// compress this head to the forward tail
- setStateAsMergeWithNext();
+ setStateAsMergeDir(mergeWithNext);
+// setStateAsMergeWithNext();
// configureUpdateMsg(isNextOrPrevious?, getVertexValue()); // TODO change to sendmsg or sendUpdateFrom...
sendUpdateMsg(isP4, toPredecessor);
// sendUpdateMsgToPredecessor(true); //TODO all of these can be simplified
} else if (hasPrev && !prevHead) {
// compress this head to the reverse tail
- setStateAsMergeWithPrev();
+ setStateAsMergeDir(mergeWithPrev);
+// setStateAsMergeWithPrev();
sendUpdateMsg(isP4, toSuccessor);
// sendUpdateMsgToSuccessor(true);
}
@@ -160,7 +164,8 @@
if ((!nextHead && !prevHead) && (curKmer.compareTo(nextKmer) < 0 && curKmer.compareTo(prevKmer) < 0)) {
// tails on both sides, and I'm the "local minimum"
// compress me towards the tail in forward dir
- setStateAsMergeWithNext();
+ setStateAsMergeDir(mergeWithNext);
+// setStateAsMergeWithNext();
sendUpdateMsg(isP4, toPredecessor);
// sendUpdateMsgToPredecessor(true);
}
@@ -168,7 +173,8 @@
// no previous node
if (!nextHead && curKmer.compareTo(nextKmer) < 0) {
// merge towards tail in forward dir
- setStateAsMergeWithNext();
+// setStateAsMergeWithNext();
+ setStateAsMergeDir(mergeWithNext);
sendUpdateMsg(isP4, toPredecessor);
// sendUpdateMsgToPredecessor(true);
}
@@ -176,13 +182,14 @@
// no next node
if (!prevHead && curKmer.compareTo(prevKmer) < 0) {
// merge towards tail in reverse dir
- setStateAsMergeWithPrev();
+// setStateAsMergeWithPrev();
+ setStateAsMergeDir(mergeWithPrev);
sendUpdateMsg(isP4, toSuccessor);
// sendUpdateMsgToSuccessor(true);
}
}
}
- } // TODO else voteToHalt (when you combine steps 2 and 3)
+ } // TODO else voteToHalt (when I combine steps 2 and 3)
this.activate();
}
else if (getSuperstep() % 4 == 0){