p2 pass test
diff --git a/genomix/genomix-data/src/main/java/edu/uci/ics/genomix/type/KmerBytesWritable.java b/genomix/genomix-data/src/main/java/edu/uci/ics/genomix/type/KmerBytesWritable.java
index f14056c..65233d8 100644
--- a/genomix/genomix-data/src/main/java/edu/uci/ics/genomix/type/KmerBytesWritable.java
+++ b/genomix/genomix-data/src/main/java/edu/uci/ics/genomix/type/KmerBytesWritable.java
@@ -432,44 +432,9 @@
* : the previous kmer
*/
public void mergeWithRFKmer(int initialKmerSize, KmerBytesWritable preKmer) {
- int preKmerLength = kmerlength;
- int preSize = kmerByteSize;
- this.kmerlength += preKmer.kmerlength - initialKmerSize + 1;
- setSize(KmerUtil.getByteNumFromK(kmerlength));
- // byte cacheByte = getOneByteFromKmerAtPosition(0, bytes, offset, preSize);
-
- int byteIndex = kmerByteSize - 1;
- byte cacheByte = 0x00;
- int posnInByte = 0;
-
- // copy rc of preKmer into high bytes
- for (int i = preKmer.kmerlength - 1; i >= initialKmerSize - 1; i--) {
- byte code = GeneCode.getPairedGeneCode(preKmer.getGeneCodeAtPosition(i));
- cacheByte |= (byte) (code << posnInByte);
- posnInByte += 2;
- if (posnInByte == 8) {
- bytes[byteIndex--] = cacheByte;
- cacheByte = 0;
- posnInByte = 0;
- }
- }
-
- // copy my kmer into low positions of bytes
- for (int i = 0; i < preKmerLength; i++) {
- // expanding the capacity makes this offset incorrect. It's off by the # of additional bytes added.
- int newposn = i + (kmerByteSize - preSize) * 4;
- byte code = geneCodeAtPosition(newposn);
- cacheByte |= (byte) (code << posnInByte);
- posnInByte += 2;
- if (posnInByte == 8) {
- bytes[byteIndex--] = cacheByte;
- cacheByte = 0;
- posnInByte = 0;
- }
- }
- if(posnInByte > 0)
- bytes[offset] = cacheByte;
- clearLeadBit();
+ KmerBytesWritable reversed = new KmerBytesWritable(preKmer.kmerlength);
+ reversed.setByReadReverse(preKmer.toString().getBytes(), 0);
+ mergeWithRRKmer(initialKmerSize, reversed);
}
/**
diff --git a/genomix/genomix-data/src/test/java/edu/uci/ics/genomix/data/test/KmerBytesWritableTest.java b/genomix/genomix-data/src/test/java/edu/uci/ics/genomix/data/test/KmerBytesWritableTest.java
index fbfbeeb..77b8462 100644
--- a/genomix/genomix-data/src/test/java/edu/uci/ics/genomix/data/test/KmerBytesWritableTest.java
+++ b/genomix/genomix-data/src/test/java/edu/uci/ics/genomix/data/test/KmerBytesWritableTest.java
@@ -257,6 +257,15 @@
k2.setByRead(test2.getBytes(), 0);
k1.mergeWithFRKmer(3, k2);
Assert.assertEquals("ATAG", k1.toString());
+
+ test1 = "TCTAT";
+ test2 = "GAAC";
+ k1 = new KmerBytesWritable(5);
+ k2 = new KmerBytesWritable(4);
+ k1.setByRead(test1.getBytes(), 0);
+ k2.setByRead(test2.getBytes(), 0);
+ k1.mergeWithRFKmer(3, k2);
+ Assert.assertEquals("GTTCTAT", k1.toString());
}
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 544d2f3..169d677 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
@@ -355,7 +355,8 @@
public void sendUpdateMsg(){
outgoingMsg.setUpdateMsg(true);
byte meToNeighborDir = (byte) (incomingMsg.getFlag() & MessageFlag.DIR_MASK);
- switch(meToNeighborDir){
+ byte neighborToMeDir = mirrorDirection(meToNeighborDir);
+ switch(neighborToMeDir){
case MessageFlag.DIR_FF:
case MessageFlag.DIR_FR:
sendUpdateMsgToPredecessor();
diff --git a/genomix/genomix-pregelix/src/main/java/edu/uci/ics/genomix/pregelix/operator/pathmerge/LogAlgorithmForPathMergeVertex.java b/genomix/genomix-pregelix/src/main/java/edu/uci/ics/genomix/pregelix/operator/pathmerge/LogAlgorithmForPathMergeVertex.java
index 16ea1cb..1309fba 100644
--- a/genomix/genomix-pregelix/src/main/java/edu/uci/ics/genomix/pregelix/operator/pathmerge/LogAlgorithmForPathMergeVertex.java
+++ b/genomix/genomix-pregelix/src/main/java/edu/uci/ics/genomix/pregelix/operator/pathmerge/LogAlgorithmForPathMergeVertex.java
@@ -217,7 +217,6 @@
voteToHalt();
} else if (getSuperstep() % 3 == 2 && getSuperstep() <= maxIteration){
processMergeInHeadVertex(msgIterator);
- System.out.print("");
}else
voteToHalt();
}