Add isUnMergeVertex()
diff --git a/genomix/genomix-pregelix/src/main/java/edu/uci/ics/genomix/pregelix/operator/BasicGraphCleanVertex.java b/genomix/genomix-pregelix/src/main/java/edu/uci/ics/genomix/pregelix/operator/BasicGraphCleanVertex.java
index bb99981..f1fb14a 100644
--- a/genomix/genomix-pregelix/src/main/java/edu/uci/ics/genomix/pregelix/operator/BasicGraphCleanVertex.java
+++ b/genomix/genomix-pregelix/src/main/java/edu/uci/ics/genomix/pregelix/operator/BasicGraphCleanVertex.java
@@ -403,6 +403,7 @@
outFlag = 0;
outFlag |= MessageFlag.IS_HEAD;
sendSettledMsgToAllNeighborNodes(tmpValue);
+ voteToHalt();
} else{
// update internal state
if (VertexUtil.isVertexWithOnlyOneIncoming(getVertexValue())){
@@ -418,7 +419,6 @@
getVertexValue().setState(state);
activate();
}
-
// send to neighbors
if (VertexUtil.isVertexWithManyIncoming(getVertexValue())) {
outFlag = 0;
@@ -429,11 +429,9 @@
outFlag |= MessageFlag.IS_HEAD;
sendSettledMsgToAllNextNodes(getVertexValue());
}
- }
- if(!VertexUtil.isActiveVertex(getVertexValue())
- || isTandemRepeat(getVertexValue())){
- getVertexValue().setState(State.IS_HALT);
- voteToHalt();
+ //if UnmergeVertex, voteToHalt()
+ if(VertexUtil.isUnMergeVertex(getVertexValue()))
+ voteToHalt();
}
}
@@ -698,12 +696,14 @@
}
public boolean isTandemRepeat(VertexValueWritable value){
+ VKmerBytesWritable kmerToCheck;
for(byte d : DirectionFlag.values){
Iterator<VKmerBytesWritable> it = value.getEdgeList(d).getKeys();
while(it.hasNext()){
- repeatKmer.setAsCopy(it.next());
+ kmerToCheck = it.next();
if(repeatKmer.equals(getVertexId())){
repeatDir = d;
+ repeatKmer.setAsCopy(kmerToCheck);
return true;
}
}
@@ -817,11 +817,19 @@
voteToHalt();
}
}
- if(!VertexUtil.isActiveVertex(getVertexValue())
+ if(!VertexUtil.isCanMergeVertex(getVertexValue())
|| isTandemRepeat(getVertexValue())){
getVertexValue().setState(MessageFlag.IS_HALT);
voteToHalt();
}
}
+ public boolean isInactiveNode(){
+ return VertexUtil.isUnMergeVertex(getVertexValue()) || isTandemRepeat(getVertexValue());
+ }
+
+ public boolean isActiveNode(){
+ return !isInactiveNode();
+ }
+
}
\ No newline at end of file
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 083b659..9f47631 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
@@ -174,10 +174,14 @@
return value.outDegree() > 1;
}
- public static boolean isActiveVertex(VertexValueWritable value){
+ public static boolean isCanMergeVertex(VertexValueWritable value){
return value.inDegree() == 1 || value.outDegree() == 1;
}
+ public static boolean isUnMergeVertex(VertexValueWritable value){
+ return !isCanMergeVertex(value);
+ }
+
/**
* check if the vertex is bubble
*/