Simplify the main compute function of removetip and removelowcoverage
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 e94a359..6f228dd 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
@@ -281,30 +281,30 @@
initVertex();
if (getSuperstep() == 1) {
if(VertexUtil.isBubbleVertex(getVertexValue())){
- /** clean allDeleteSet **/
+ // clean allDeleteSet
allDeletedSet.clear();
- /** add a fake node **/
+ // add a fake node
addFakeVertex();
- /** send bubble and major vertex msg to minor vertex **/
+ // send bubble and major vertex msg to minor vertex
sendBubbleAndMajorVertexMsgToMinorVertex();
}
} else if (getSuperstep() == 2){
if(!isFakeVertex()){
- /** aggregate bubble nodes and grouped by major vertex **/
+ // aggregate bubble nodes and grouped by major vertex
aggregateBubbleNodesByMajorNode(msgIterator);
for(VKmerBytesWritable prevId : receivedMsgMap.keySet()){
receivedMsgList.clear();
receivedMsgList.addAll(receivedMsgMap.get(prevId));
if(receivedMsgList.size() > 1){ // filter bubble
- /** for each majorVertex, sort the node by decreasing order of coverage **/
+ // for each majorVertex, sort the node by decreasing order of coverage
receivedMsgList = receivedMsgMap.get(prevId);
Collections.sort(receivedMsgList, new BubbleMergeMessageWritable.SortByCoverage());
- /** process similarSet, keep the unchanged set and deleted set & add coverage to unchange node **/
+ // process similarSet, keep the unchanged set and deleted set & add coverage to unchange node
processSimilarSetToUnchangeSetAndDeletedSet();
- /** send message to the unchanged set for updating coverage & send kill message to the deleted set **/
+ // send message to the unchanged set for updating coverage & send kill message to the deleted set
processUnchangedSet();
processDeletedSet();
}
@@ -318,7 +318,7 @@
broadcaseUpdateEdges();
} else
if(incomingMsg.getFlag() == MessageFlag.UNCHANGE){
- /** update Node including average coverage **/
+ // update Node including average coverage
getVertexValue().setNode(incomingMsg.getNode());
}
}
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
index a2dedbb..0696a53 100644
--- 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
@@ -50,7 +50,7 @@
getVertexValue().getCounters().clear();
}
- public void lowCoverageVertexBroadcaseKillself(){
+ public void detectLowCoverageVertex(){
if(getVertexValue().getAvgCoverage() <= minAverageCoverage){
//broadcase kill self
broadcastKillself();
@@ -78,7 +78,7 @@
public void compute(Iterator<MessageWritable> msgIterator) {
initVertex();
if(getSuperstep() == 1)
- lowCoverageVertexBroadcaseKillself();
+ detectLowCoverageVertex();
else if(getSuperstep() == 2){
if(deadNodeSet.contains(getVertexId()))
cleanupDeadVertex();
diff --git a/genomix/genomix-pregelix/src/main/java/edu/uci/ics/genomix/pregelix/operator/tipremove/TipRemoveVertex.java b/genomix/genomix-pregelix/src/main/java/edu/uci/ics/genomix/pregelix/operator/tipremove/TipRemoveVertex.java
index 3da5d94..deff7db 100644
--- a/genomix/genomix-pregelix/src/main/java/edu/uci/ics/genomix/pregelix/operator/tipremove/TipRemoveVertex.java
+++ b/genomix/genomix-pregelix/src/main/java/edu/uci/ics/genomix/pregelix/operator/tipremove/TipRemoveVertex.java
@@ -56,31 +56,44 @@
return null;
}
+ /**
+ * step1
+ */
+ public void detectTip(){
+ EDGETYPE neighborToTipEdgetype = getTipEdgetype();
+ //I'm tip and my length is less than the minimum
+ if(neighborToTipEdgetype != null && getVertexValue().getKmerLength() <= length){
+ EDGETYPE tipToNeighborEdgetype = neighborToTipEdgetype.mirror();
+ outgoingMsg.setFlag(tipToNeighborEdgetype.get());
+ outgoingMsg.setSourceVertexId(getVertexId());
+ destVertexId = getDestVertexId(neighborToTipEdgetype.dir());
+ sendMsg(destVertexId, outgoingMsg);
+ deleteVertex(getVertexId());
+
+ //set statistics counter: Num_RemovedTips
+ updateStatisticsCounter(StatisticsCounter.Num_RemovedTips);
+ getVertexValue().setCounters(counters);
+ }
+ }
+
+ /**
+ * step2
+ */
+ public void responseToDeadTip(Iterator<MessageWritable> msgIterator){
+ while(msgIterator.hasNext()){
+ incomingMsg = msgIterator.next();
+ EDGETYPE tipToMeEdgetype = EDGETYPE.fromByte(incomingMsg.getFlag());
+ getVertexValue().getEdgeList(tipToMeEdgetype).remove(incomingMsg.getSourceVertexId());
+ }
+ }
+
@Override
public void compute(Iterator<MessageWritable> msgIterator) {
initVertex();
- if(getSuperstep() == 1){
- EDGETYPE neighborToTipEdgetype = getTipEdgetype();
- //I'm tip and my length is less than the minimum
- if(neighborToTipEdgetype != null && getVertexValue().getKmerLength() <= length){
- EDGETYPE tipToNeighborEdgetype = neighborToTipEdgetype.mirror();
- outgoingMsg.setFlag(tipToNeighborEdgetype.get());
- outgoingMsg.setSourceVertexId(getVertexId());
- destVertexId = getDestVertexId(neighborToTipEdgetype.dir());
- sendMsg(destVertexId, outgoingMsg);
- deleteVertex(getVertexId());
-
- //set statistics counter: Num_RemovedTips
- updateStatisticsCounter(StatisticsCounter.Num_RemovedTips);
- getVertexValue().setCounters(counters);
- }
- } else if(getSuperstep() == 2){
- while(msgIterator.hasNext()){
- incomingMsg = msgIterator.next();
- EDGETYPE tipToMeEdgetype = EDGETYPE.fromByte(incomingMsg.getFlag());
- getVertexValue().getEdgeList(tipToMeEdgetype).remove(incomingMsg.getSourceVertexId());
- }
- }
+ if(getSuperstep() == 1)
+ detectTip();
+ else if(getSuperstep() == 2)
+ responseToDeadTip(msgIterator);
voteToHalt();
}