blob: a33397085ab88705c002187ea3c62706086fa2d3 [file] [log] [blame]
Nan Zhang5eaa7992013-07-29 16:57:22 -07001From 9e006501f9e33467a8428199bd94b71dbff063ef Mon Sep 17 00:00:00 2001
2From: Anbang Xu <anbangx@gmail.com>
3Date: Fri, 26 Jul 2013 14:10:33 -0700
4Subject: [PATCH] p2 pass all the tests except 9
5
6---
7 .../genomix/data/test/KmerBytesWritableTest.java | 76 +++++++++++++++++++++-
8 .../genomix/pregelix/io/VertexValueWritable.java | 2 +-
9 .../operator/pathmerge/BasicPathMergeVertex.java | 35 +++++-----
10 .../pathmerge/LogAlgorithmForPathMergeVertex.java | 8 +--
11 .../pregelix/JobRun/PathMergeSmallTestSuite.java | 2 +-
12 5 files changed, 98 insertions(+), 25 deletions(-)
13
14diff --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
15index bda73e5..fbfbeeb 100644
16--- a/genomix/genomix-data/src/test/java/edu/uci/ics/genomix/data/test/KmerBytesWritableTest.java
17+++ b/genomix/genomix-data/src/test/java/edu/uci/ics/genomix/data/test/KmerBytesWritableTest.java
18@@ -229,14 +229,34 @@ public class KmerBytesWritableTest {
19 merge.mergeWithRFKmer(i, kmer2);
20 Assert.assertEquals("GGCACAACAACCC", merge.toString());
21
22- String test1 = "CTA";
23- String test2 = "AGA";
24+ String test1;
25+ String test2;
26+ test1 = "CTA";
27+ test2 = "AGA";
28 KmerBytesWritable k1 = new KmerBytesWritable(3);
29 KmerBytesWritable k2 = new KmerBytesWritable(3);
30 k1.setByRead(test1.getBytes(), 0);
31 k2.setByRead(test2.getBytes(), 0);
32 k1.mergeWithRFKmer(3, k2);
33 Assert.assertEquals("TCTA", k1.toString());
34+
35+ test1 = "CTA";
36+ test2 = "ATA"; //TAT
37+ k1 = new KmerBytesWritable(3);
38+ k2 = new KmerBytesWritable(3);
39+ k1.setByRead(test1.getBytes(), 0);
40+ k2.setByRead(test2.getBytes(), 0);
41+ k1.mergeWithFRKmer(3, k2);
42+ Assert.assertEquals("CTAT", k1.toString());
43+
44+ test1 = "ATA";
45+ test2 = "CTA"; //TAT
46+ k1 = new KmerBytesWritable(3);
47+ k2 = new KmerBytesWritable(3);
48+ k1.setByRead(test1.getBytes(), 0);
49+ k2.setByRead(test2.getBytes(), 0);
50+ k1.mergeWithFRKmer(3, k2);
51+ Assert.assertEquals("ATAG", k1.toString());
52 }
53
54
55@@ -281,5 +301,55 @@ public class KmerBytesWritableTest {
56 }
57 }
58 }
59-
60+
61+ @Test
62+ public void TestFinalMerge() {
63+ String selfString;
64+ String match;
65+ String msgString;
66+ int index;
67+ KmerBytesWritable kmer = new KmerBytesWritable();
68+ int kmerSize = 3;
69+
70+ String F1 = "AATAG";
71+ String F2 = "TAGAA";
72+ String R1 = "CTATT";
73+ String R2 = "TTCTA";
74+
75+ //FF test
76+ selfString = F1;
77+ match = selfString.substring(selfString.length() - kmerSize + 1,selfString.length());
78+ msgString = F2;
79+ index = msgString.indexOf(match);
80+ kmer.reset(msgString.length() - index);
81+ kmer.setByRead(msgString.substring(index).getBytes(), 0);
82+ System.out.println(kmer.toString());
83+
84+ //FR test
85+ selfString = F1;
86+ match = selfString.substring(selfString.length() - kmerSize + 1,selfString.length());
87+ msgString = GeneCode.reverseComplement(R2);
88+ index = msgString.indexOf(match);
89+ kmer.reset(msgString.length() - index);
90+ kmer.setByRead(msgString.substring(index).getBytes(), 0);
91+ System.out.println(kmer.toString());
92+
93+ //RF test
94+ selfString = R1;
95+ match = selfString.substring(0,kmerSize - 1);
96+ msgString = GeneCode.reverseComplement(F2);
97+ index = msgString.lastIndexOf(match) + kmerSize - 2;
98+ kmer.reset(index + 1);
99+ kmer.setByReadReverse(msgString.substring(0, index + 1).getBytes(), 0);
100+ System.out.println(kmer.toString());
101+
102+ //RR test
103+ selfString = R1;
104+ match = selfString.substring(0,kmerSize - 1);
105+ msgString = R2;
106+ index = msgString.lastIndexOf(match) + kmerSize - 2;
107+ kmer.reset(index + 1);
108+ kmer.setByRead(msgString.substring(0, index + 1).getBytes(), 0);
109+ System.out.println(kmer.toString());
110+ }
111 }
112diff --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
113index 6d4f683..065bfd5 100644
114--- a/genomix/genomix-pregelix/src/main/java/edu/uci/ics/genomix/pregelix/io/VertexValueWritable.java
115+++ b/genomix/genomix-pregelix/src/main/java/edu/uci/ics/genomix/pregelix/io/VertexValueWritable.java
116@@ -32,7 +32,7 @@ public class VertexValueWritable implements WritableComparable<VertexValueWritab
117 public static final byte SHOULD_MERGEWITHNEXT = 0b01 << 3;
118 public static final byte SHOULD_MERGEWITHPREV = 0b10 << 3;
119 public static final byte SHOULD_MERGE_MASK = 0b11 << 3;
120- public static final byte SHOULD_MERGE_CLEAR = 0b1110011;
121+ public static final byte SHOULD_MERGE_CLEAR = 0b1100111;
122 }
123
124 private PositionListWritable nodeIdList;
125diff --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
126index b7b0814..ec608c5 100644
127--- a/genomix/genomix-pregelix/src/main/java/edu/uci/ics/genomix/pregelix/operator/pathmerge/BasicPathMergeVertex.java
128+++ b/genomix/genomix-pregelix/src/main/java/edu/uci/ics/genomix/pregelix/operator/pathmerge/BasicPathMergeVertex.java
129@@ -495,6 +495,7 @@ public class BasicPathMergeVertex extends
130
131 public void setStateAsMergeWithNext(){
132 byte state = getVertexValue().getState();
133+ state &= State.SHOULD_MERGE_CLEAR;
134 state |= State.SHOULD_MERGEWITHNEXT;
135 getVertexValue().setState(state);
136 }
137@@ -512,6 +513,7 @@ public class BasicPathMergeVertex extends
138
139 public void setStateAsMergeWithPrev(){
140 byte state = getVertexValue().getState();
141+ state &= State.SHOULD_MERGE_CLEAR;
142 state |= State.SHOULD_MERGEWITHPREV;
143 getVertexValue().setState(state);
144 }
145@@ -638,7 +640,7 @@ public class BasicPathMergeVertex extends
146 String match;
147 String msgString;
148 int index;
149- switch(neighborToMergeDir){
150+ switch(neighborToMeDir){
151 case MessageFlag.DIR_FF:
152 selfString = getVertexValue().getKmer().toString();
153 match = selfString.substring(selfString.length() - kmerSize + 1,selfString.length());
154@@ -648,28 +650,29 @@ public class BasicPathMergeVertex extends
155 kmer.setByRead(msgString.substring(index).getBytes(), 0);
156 break;
157 case MessageFlag.DIR_FR:
158- selfString = getVertexId().toString();
159- match = selfString.substring(selfString.length() - kmerSize + 1,selfString.length());
160+ selfString = getVertexValue().getKmer().toString();
161+ match = selfString.substring(selfString.length() - kmerSize + 1,selfString.length());
162 msgString = GeneCode.reverseComplement(msg.getKmer().toString());
163 index = msgString.indexOf(match);
164 kmer.reset(msgString.length() - index);
165- kmer.setByRead(msgString.substring(index).getBytes(), 0);
166+ kmer.setByReadReverse(msgString.substring(index).getBytes(), 0);
167 break;
168 case MessageFlag.DIR_RF:
169- selfString = GeneCode.reverseComplement(getVertexValue().getKmer().toString());
170- match = selfString.substring(selfString.length() - kmerSize + 1,selfString.length());
171- msgString = msg.getKmer().toString();
172- index = msgString.indexOf(match);
173- kmer.reset(msgString.length() - index);
174- kmer.setByRead(msgString.substring(index).getBytes(), 0);
175+ selfString = getVertexValue().getKmer().toString();
176+ match = selfString.substring(0,kmerSize - 1);
177+ msgString = GeneCode.reverseComplement(msg.getKmer().toString());
178+ index = msgString.lastIndexOf(match) + kmerSize - 2;
179+ kmer.reset(index + 1);
180+ kmer.setByReadReverse(msgString.substring(0, index + 1).getBytes(), 0);
181 break;
182 case MessageFlag.DIR_RR:
183- selfString = GeneCode.reverseComplement(getVertexValue().getKmer().toString());
184- match = selfString.substring(selfString.length() - kmerSize + 1,selfString.length());
185- msgString = GeneCode.reverseComplement(msg.getKmer().toString());
186- index = msgString.indexOf(match);
187- kmer.reset(msgString.length() - index);
188- kmer.setByRead(msgString.substring(index).getBytes(), 0);
189+ selfString = getVertexValue().getKmer().toString();
190+ match = selfString.substring(0,kmerSize - 1);
191+ msgString = msg.getKmer().toString();
192+ index = msgString.lastIndexOf(match) + kmerSize - 2;
193+ kmer.reset(index + 1);
194+ kmer.setByRead(msgString.substring(0, index + 1).getBytes(), 0);
195+ System.out.println(kmer.toString());
196 break;
197 }
198
199diff --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
200index a68b646..3b5a782 100644
201--- a/genomix/genomix-pregelix/src/main/java/edu/uci/ics/genomix/pregelix/operator/pathmerge/LogAlgorithmForPathMergeVertex.java
202+++ b/genomix/genomix-pregelix/src/main/java/edu/uci/ics/genomix/pregelix/operator/pathmerge/LogAlgorithmForPathMergeVertex.java
203@@ -170,22 +170,22 @@ public class LogAlgorithmForPathMergeVertex extends
204 case MessageFromHead.BothMsgsFromHead:
205 case MessageFromHead.OneMsgFromOldHeadAndOneFromHead:
206 for(int i = 0; i < 2; i++)
207- processMerge(receivedMsgList.get(i));
208+ processFinalMerge(receivedMsgList.get(i)); //processMerge()
209 getVertexValue().setState(State.IS_FINAL);
210 voteToHalt();
211 break;
212 case MessageFromHead.OneMsgFromHeadAndOneFromNonHead:
213 for(int i = 0; i < 2; i++)
214- processMerge(receivedMsgList.get(i));
215+ processFinalMerge(receivedMsgList.get(i));
216 getVertexValue().setState(State .IS_HEAD);
217 break;
218 case MessageFromHead.BothMsgsFromNonHead:
219 for(int i = 0; i < 2; i++)
220- processMerge(receivedMsgList.get(i));
221+ processFinalMerge(receivedMsgList.get(i));
222 break;
223 case MessageFromHead.NO_MSG:
224 //halt
225- deleteVertex(getVertexId());
226+ voteToHalt(); //deleteVertex(getVertexId());
227 break;
228 }
229 }
230diff --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
231index 9f96b5a..1578dfc 100644
232--- a/genomix/genomix-pregelix/src/test/java/edu/uci/ics/genomix/pregelix/JobRun/PathMergeSmallTestSuite.java
233+++ b/genomix/genomix-pregelix/src/test/java/edu/uci/ics/genomix/pregelix/JobRun/PathMergeSmallTestSuite.java
234@@ -52,7 +52,7 @@ public class PathMergeSmallTestSuite extends TestSuite {
235 // + "6", PreFix + File.separator
236 // + "7", PreFix + File.separator
237 // + "8", PreFix + File.separator
238- + "5"};
239+ + "9"};
240 private static final String ACTUAL_RESULT_DIR = "data/actual/pathmerge";
241 private static final String PATH_TO_HADOOP_CONF = "src/test/resources/hadoop/conf";
242 private static final String PATH_TO_CLUSTER_STORE = "src/test/resources/cluster/stores.properties";
243--
2441.7.11.1
245