update 2013-6-4
diff --git a/genomix/genomix-pregelix/src/main/java/edu/uci/ics/genomix/pregelix/io/AdjacencyListWritable.java b/genomix/genomix-pregelix/src/main/java/edu/uci/ics/genomix/pregelix/io/AdjacencyListWritable.java
index fae1970..a0a8ea5 100644
--- a/genomix/genomix-pregelix/src/main/java/edu/uci/ics/genomix/pregelix/io/AdjacencyListWritable.java
+++ b/genomix/genomix-pregelix/src/main/java/edu/uci/ics/genomix/pregelix/io/AdjacencyListWritable.java
@@ -27,6 +27,10 @@
reverseList.reset();
}
+ public int getCountOfPosition(){
+ return forwardList.getCountOfPosition() + reverseList.getCountOfPosition();
+ }
+
public PositionListWritable getForwardList() {
return forwardList;
}
diff --git a/genomix/genomix-pregelix/src/main/java/edu/uci/ics/genomix/pregelix/operator/tipremove/BridgeRemoveVertex.java b/genomix/genomix-pregelix/src/main/java/edu/uci/ics/genomix/pregelix/operator/bridgeremove/BridgeRemoveVertex.java
similarity index 97%
rename from genomix/genomix-pregelix/src/main/java/edu/uci/ics/genomix/pregelix/operator/tipremove/BridgeRemoveVertex.java
rename to genomix/genomix-pregelix/src/main/java/edu/uci/ics/genomix/pregelix/operator/bridgeremove/BridgeRemoveVertex.java
index bdabaa4..9a46a67 100644
--- a/genomix/genomix-pregelix/src/main/java/edu/uci/ics/genomix/pregelix/operator/tipremove/BridgeRemoveVertex.java
+++ b/genomix/genomix-pregelix/src/main/java/edu/uci/ics/genomix/pregelix/operator/bridgeremove/BridgeRemoveVertex.java
@@ -1,4 +1,4 @@
-package edu.uci.ics.genomix.pregelix.operator.tipremove;
+package edu.uci.ics.genomix.pregelix.operator.bridgeremove;
import java.util.Iterator;
import org.apache.hadoop.io.NullWritable;
diff --git a/genomix/genomix-pregelix/src/main/java/edu/uci/ics/genomix/pregelix/operator/tipremove/BubbleMergeVertex.java b/genomix/genomix-pregelix/src/main/java/edu/uci/ics/genomix/pregelix/operator/bubblemerge/BubbleMergeVertex.java
similarity index 97%
rename from genomix/genomix-pregelix/src/main/java/edu/uci/ics/genomix/pregelix/operator/tipremove/BubbleMergeVertex.java
rename to genomix/genomix-pregelix/src/main/java/edu/uci/ics/genomix/pregelix/operator/bubblemerge/BubbleMergeVertex.java
index f33bcd4..a9c9c5b 100644
--- a/genomix/genomix-pregelix/src/main/java/edu/uci/ics/genomix/pregelix/operator/tipremove/BubbleMergeVertex.java
+++ b/genomix/genomix-pregelix/src/main/java/edu/uci/ics/genomix/pregelix/operator/bubblemerge/BubbleMergeVertex.java
@@ -1,4 +1,4 @@
-package edu.uci.ics.genomix.pregelix.operator.tipremove;
+package edu.uci.ics.genomix.pregelix.operator.bubblemerge;
import java.util.Iterator;
import org.apache.hadoop.io.NullWritable;
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 7e184d1..534da5c 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
@@ -11,6 +11,8 @@
import edu.uci.ics.genomix.pregelix.format.DataCleanOutputFormat;
import edu.uci.ics.genomix.pregelix.io.MessageWritable;
import edu.uci.ics.genomix.pregelix.io.ValueStateWritable;
+import edu.uci.ics.genomix.pregelix.type.Message;
+import edu.uci.ics.genomix.pregelix.util.VertexUtil;
/*
* vertexId: BytesWritable
@@ -50,6 +52,9 @@
public static int kmerSize = -1;
private int length = -1;
+ private MessageWritable incomingMsg = new MessageWritable();
+ private MessageWritable outgoingMsg = new MessageWritable();
+
/**
* initiate kmerSize, length
*/
@@ -58,14 +63,33 @@
kmerSize = getContext().getConfiguration().getInt(KMER_SIZE, 5);
if(length == -1)
length = getContext().getConfiguration().getInt(LENGTH, kmerSize + 5);
+ outgoingMsg.reset();
}
@Override
public void compute(Iterator<MessageWritable> msgIterator) {
initVertex(); //getVertexValue().getLengthOfMergeChain() < length
if(getSuperstep() == 1){
-
+ if(VertexUtil.isIncomingTipVertex(getVertexValue())){
+ if(getVertexValue().getLengthOfMergeChain() > length){
+ if(getVertexValue().getOutgoingList().getCountOfPosition() != 0){
+ if(getVertexValue().getFFList().getCountOfPosition() > 0)
+ outgoingMsg.setMessage(Message.TOFORWARD);
+ else if(getVertexValue().getFRList().getCountOfPosition() > 0)
+ outgoingMsg.setMessage(Message.TOREVERSE);
+ outgoingMsg.setSourceVertexId(getVertexId());
+ }
+ }
+
+ }
+ else if(VertexUtil.isOutgoingTipVertex(getVertexValue())){
+
+ }
}
+ else if(getSuperstep() == 2){
+
+ }
+ voteToHalt();
}
public static void main(String[] args) throws Exception {
diff --git a/genomix/genomix-pregelix/src/main/java/edu/uci/ics/genomix/pregelix/type/Message.java b/genomix/genomix-pregelix/src/main/java/edu/uci/ics/genomix/pregelix/type/Message.java
index fa5f73b..b97f0bb 100644
--- a/genomix/genomix-pregelix/src/main/java/edu/uci/ics/genomix/pregelix/type/Message.java
+++ b/genomix/genomix-pregelix/src/main/java/edu/uci/ics/genomix/pregelix/type/Message.java
@@ -8,7 +8,8 @@
public static final byte STOP = 3;
public static final byte FROMPSEUDOHEAD = 4;
public static final byte FROMPSEUDOREAR = 5;
- public static final byte FROMSELF = 6;
+ public static final byte TOFORWARD = 6;
+ public static final byte TOREVERSE = 7;
public final static class MESSAGE_CONTENT {
@@ -33,8 +34,11 @@
case FROMPSEUDOREAR:
r = "FROMPSEUDOREAR";
break;
- case FROMSELF:
- r = "FROMSELF";
+ case TOFORWARD:
+ r = "TOFORWARD";
+ break;
+ case TOREVERSE:
+ r = "TOREVERSE";
break;
}
return r;
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 1740744..19839c7 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
@@ -47,4 +47,15 @@
}
return false;*/
}
+
+ /**
+ * check if vertex is a tip
+ */
+ public static boolean isIncomingTipVertex(ValueStateWritable value){
+ return value.inDegree() == 0 && value.outDegree() == 1;
+ }
+
+ public static boolean isOutgoingTipVertex(ValueStateWritable value){
+ return value.inDegree() == 1 && value.outDegree() == 0;
+ }
}