blob: a33397085ab88705c002187ea3c62706086fa2d3 [file] [log] [blame]
From 9e006501f9e33467a8428199bd94b71dbff063ef Mon Sep 17 00:00:00 2001
From: Anbang Xu <anbangx@gmail.com>
Date: Fri, 26 Jul 2013 14:10:33 -0700
Subject: [PATCH] p2 pass all the tests except 9
---
.../genomix/data/test/KmerBytesWritableTest.java | 76 +++++++++++++++++++++-
.../genomix/pregelix/io/VertexValueWritable.java | 2 +-
.../operator/pathmerge/BasicPathMergeVertex.java | 35 +++++-----
.../pathmerge/LogAlgorithmForPathMergeVertex.java | 8 +--
.../pregelix/JobRun/PathMergeSmallTestSuite.java | 2 +-
5 files changed, 98 insertions(+), 25 deletions(-)
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 bda73e5..fbfbeeb 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
@@ -229,14 +229,34 @@ public class KmerBytesWritableTest {
merge.mergeWithRFKmer(i, kmer2);
Assert.assertEquals("GGCACAACAACCC", merge.toString());
- String test1 = "CTA";
- String test2 = "AGA";
+ String test1;
+ String test2;
+ test1 = "CTA";
+ test2 = "AGA";
KmerBytesWritable k1 = new KmerBytesWritable(3);
KmerBytesWritable k2 = new KmerBytesWritable(3);
k1.setByRead(test1.getBytes(), 0);
k2.setByRead(test2.getBytes(), 0);
k1.mergeWithRFKmer(3, k2);
Assert.assertEquals("TCTA", k1.toString());
+
+ test1 = "CTA";
+ test2 = "ATA"; //TAT
+ k1 = new KmerBytesWritable(3);
+ k2 = new KmerBytesWritable(3);
+ k1.setByRead(test1.getBytes(), 0);
+ k2.setByRead(test2.getBytes(), 0);
+ k1.mergeWithFRKmer(3, k2);
+ Assert.assertEquals("CTAT", k1.toString());
+
+ test1 = "ATA";
+ test2 = "CTA"; //TAT
+ k1 = new KmerBytesWritable(3);
+ k2 = new KmerBytesWritable(3);
+ k1.setByRead(test1.getBytes(), 0);
+ k2.setByRead(test2.getBytes(), 0);
+ k1.mergeWithFRKmer(3, k2);
+ Assert.assertEquals("ATAG", k1.toString());
}
@@ -281,5 +301,55 @@ public class KmerBytesWritableTest {
}
}
}
-
+
+ @Test
+ public void TestFinalMerge() {
+ String selfString;
+ String match;
+ String msgString;
+ int index;
+ KmerBytesWritable kmer = new KmerBytesWritable();
+ int kmerSize = 3;
+
+ String F1 = "AATAG";
+ String F2 = "TAGAA";
+ String R1 = "CTATT";
+ String R2 = "TTCTA";
+
+ //FF test
+ selfString = F1;
+ match = selfString.substring(selfString.length() - kmerSize + 1,selfString.length());
+ msgString = F2;
+ index = msgString.indexOf(match);
+ kmer.reset(msgString.length() - index);
+ kmer.setByRead(msgString.substring(index).getBytes(), 0);
+ System.out.println(kmer.toString());
+
+ //FR test
+ selfString = F1;
+ match = selfString.substring(selfString.length() - kmerSize + 1,selfString.length());
+ msgString = GeneCode.reverseComplement(R2);
+ index = msgString.indexOf(match);
+ kmer.reset(msgString.length() - index);
+ kmer.setByRead(msgString.substring(index).getBytes(), 0);
+ System.out.println(kmer.toString());
+
+ //RF test
+ selfString = R1;
+ match = selfString.substring(0,kmerSize - 1);
+ msgString = GeneCode.reverseComplement(F2);
+ index = msgString.lastIndexOf(match) + kmerSize - 2;
+ kmer.reset(index + 1);
+ kmer.setByReadReverse(msgString.substring(0, index + 1).getBytes(), 0);
+ System.out.println(kmer.toString());
+
+ //RR test
+ selfString = R1;
+ match = selfString.substring(0,kmerSize - 1);
+ msgString = R2;
+ index = msgString.lastIndexOf(match) + kmerSize - 2;
+ kmer.reset(index + 1);
+ kmer.setByRead(msgString.substring(0, index + 1).getBytes(), 0);
+ System.out.println(kmer.toString());
+ }
}
diff --git a/genomix/genomix-pregelix/src/main/java/edu/uci/ics/genomix/pregelix/io/VertexValueWritable.java b/genomix/genomix-pregelix/src/main/java/edu/uci/ics/genomix/pregelix/io/VertexValueWritable.java
index 6d4f683..065bfd5 100644
--- a/genomix/genomix-pregelix/src/main/java/edu/uci/ics/genomix/pregelix/io/VertexValueWritable.java
+++ b/genomix/genomix-pregelix/src/main/java/edu/uci/ics/genomix/pregelix/io/VertexValueWritable.java
@@ -32,7 +32,7 @@ public class VertexValueWritable implements WritableComparable<VertexValueWritab
public static final byte SHOULD_MERGEWITHNEXT = 0b01 << 3;
public static final byte SHOULD_MERGEWITHPREV = 0b10 << 3;
public static final byte SHOULD_MERGE_MASK = 0b11 << 3;
- public static final byte SHOULD_MERGE_CLEAR = 0b1110011;
+ public static final byte SHOULD_MERGE_CLEAR = 0b1100111;
}
private PositionListWritable nodeIdList;
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 b7b0814..ec608c5 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
@@ -495,6 +495,7 @@ public class BasicPathMergeVertex extends
public void setStateAsMergeWithNext(){
byte state = getVertexValue().getState();
+ state &= State.SHOULD_MERGE_CLEAR;
state |= State.SHOULD_MERGEWITHNEXT;
getVertexValue().setState(state);
}
@@ -512,6 +513,7 @@ public class BasicPathMergeVertex extends
public void setStateAsMergeWithPrev(){
byte state = getVertexValue().getState();
+ state &= State.SHOULD_MERGE_CLEAR;
state |= State.SHOULD_MERGEWITHPREV;
getVertexValue().setState(state);
}
@@ -638,7 +640,7 @@ public class BasicPathMergeVertex extends
String match;
String msgString;
int index;
- switch(neighborToMergeDir){
+ switch(neighborToMeDir){
case MessageFlag.DIR_FF:
selfString = getVertexValue().getKmer().toString();
match = selfString.substring(selfString.length() - kmerSize + 1,selfString.length());
@@ -648,28 +650,29 @@ public class BasicPathMergeVertex extends
kmer.setByRead(msgString.substring(index).getBytes(), 0);
break;
case MessageFlag.DIR_FR:
- selfString = getVertexId().toString();
- match = selfString.substring(selfString.length() - kmerSize + 1,selfString.length());
+ selfString = getVertexValue().getKmer().toString();
+ match = selfString.substring(selfString.length() - kmerSize + 1,selfString.length());
msgString = GeneCode.reverseComplement(msg.getKmer().toString());
index = msgString.indexOf(match);
kmer.reset(msgString.length() - index);
- kmer.setByRead(msgString.substring(index).getBytes(), 0);
+ kmer.setByReadReverse(msgString.substring(index).getBytes(), 0);
break;
case MessageFlag.DIR_RF:
- selfString = GeneCode.reverseComplement(getVertexValue().getKmer().toString());
- match = selfString.substring(selfString.length() - kmerSize + 1,selfString.length());
- msgString = msg.getKmer().toString();
- index = msgString.indexOf(match);
- kmer.reset(msgString.length() - index);
- kmer.setByRead(msgString.substring(index).getBytes(), 0);
+ selfString = getVertexValue().getKmer().toString();
+ match = selfString.substring(0,kmerSize - 1);
+ msgString = GeneCode.reverseComplement(msg.getKmer().toString());
+ index = msgString.lastIndexOf(match) + kmerSize - 2;
+ kmer.reset(index + 1);
+ kmer.setByReadReverse(msgString.substring(0, index + 1).getBytes(), 0);
break;
case MessageFlag.DIR_RR:
- selfString = GeneCode.reverseComplement(getVertexValue().getKmer().toString());
- match = selfString.substring(selfString.length() - kmerSize + 1,selfString.length());
- msgString = GeneCode.reverseComplement(msg.getKmer().toString());
- index = msgString.indexOf(match);
- kmer.reset(msgString.length() - index);
- kmer.setByRead(msgString.substring(index).getBytes(), 0);
+ selfString = getVertexValue().getKmer().toString();
+ match = selfString.substring(0,kmerSize - 1);
+ msgString = msg.getKmer().toString();
+ index = msgString.lastIndexOf(match) + kmerSize - 2;
+ kmer.reset(index + 1);
+ kmer.setByRead(msgString.substring(0, index + 1).getBytes(), 0);
+ System.out.println(kmer.toString());
break;
}
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 a68b646..3b5a782 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
@@ -170,22 +170,22 @@ public class LogAlgorithmForPathMergeVertex extends
case MessageFromHead.BothMsgsFromHead:
case MessageFromHead.OneMsgFromOldHeadAndOneFromHead:
for(int i = 0; i < 2; i++)
- processMerge(receivedMsgList.get(i));
+ processFinalMerge(receivedMsgList.get(i)); //processMerge()
getVertexValue().setState(State.IS_FINAL);
voteToHalt();
break;
case MessageFromHead.OneMsgFromHeadAndOneFromNonHead:
for(int i = 0; i < 2; i++)
- processMerge(receivedMsgList.get(i));
+ processFinalMerge(receivedMsgList.get(i));
getVertexValue().setState(State .IS_HEAD);
break;
case MessageFromHead.BothMsgsFromNonHead:
for(int i = 0; i < 2; i++)
- processMerge(receivedMsgList.get(i));
+ processFinalMerge(receivedMsgList.get(i));
break;
case MessageFromHead.NO_MSG:
//halt
- deleteVertex(getVertexId());
+ voteToHalt(); //deleteVertex(getVertexId());
break;
}
}
diff --git a/genomix/genomix-pregelix/src/test/java/edu/uci/ics/genomix/pregelix/JobRun/PathMergeSmallTestSuite.java b/genomix/genomix-pregelix/src/test/java/edu/uci/ics/genomix/pregelix/JobRun/PathMergeSmallTestSuite.java
index 9f96b5a..1578dfc 100644
--- a/genomix/genomix-pregelix/src/test/java/edu/uci/ics/genomix/pregelix/JobRun/PathMergeSmallTestSuite.java
+++ b/genomix/genomix-pregelix/src/test/java/edu/uci/ics/genomix/pregelix/JobRun/PathMergeSmallTestSuite.java
@@ -52,7 +52,7 @@ public class PathMergeSmallTestSuite extends TestSuite {
// + "6", PreFix + File.separator
// + "7", PreFix + File.separator
// + "8", PreFix + File.separator
- + "5"};
+ + "9"};
private static final String ACTUAL_RESULT_DIR = "data/actual/pathmerge";
private static final String PATH_TO_HADOOP_CONF = "src/test/resources/hadoop/conf";
private static final String PATH_TO_CLUSTER_STORE = "src/test/resources/cluster/stores.properties";
--
1.7.11.1