Nan Zhang | 5eaa799 | 2013-07-29 16:57:22 -0700 | [diff] [blame] | 1 | From 9e006501f9e33467a8428199bd94b71dbff063ef Mon Sep 17 00:00:00 2001 |
| 2 | From: Anbang Xu <anbangx@gmail.com> |
| 3 | Date: Fri, 26 Jul 2013 14:10:33 -0700 |
| 4 | Subject: [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 | |
| 14 | 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 |
| 15 | index 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 | } |
| 112 | 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 |
| 113 | index 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; |
| 125 | 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 |
| 126 | index 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 | |
| 199 | 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 |
| 200 | index 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 | } |
| 230 | 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 |
| 231 | index 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 | -- |
| 244 | 1.7.11.1 |
| 245 | |