use direction flag as only public interface for nodewritable edges and threads
diff --git a/genomix/genomix-data/src/main/java/edu/uci/ics/genomix/type/NodeWritable.java b/genomix/genomix-data/src/main/java/edu/uci/ics/genomix/type/NodeWritable.java
index 0232054..6e69677 100644
--- a/genomix/genomix-data/src/main/java/edu/uci/ics/genomix/type/NodeWritable.java
+++ b/genomix/genomix-data/src/main/java/edu/uci/ics/genomix/type/NodeWritable.java
@@ -87,7 +87,7 @@
}
startReads.reset();
endReads.reset();
- this.kmer.reset(0);
+ kmer.reset(0);
averageCoverage = 0;
}
@@ -103,51 +103,20 @@
return kmer.getKmerLetterLength();
}
- public VKmerListWritable getFFList() {
- return edges[DirectionFlag.DIR_FF];
- }
-
- public VKmerListWritable getFRList() {
- return edges[DirectionFlag.DIR_FR];
- }
-
- public VKmerListWritable getRFList() {
- return edges[DirectionFlag.DIR_RF];
- }
-
- public VKmerListWritable getRRList() {
- return edges[DirectionFlag.DIR_RR];
+ public VKmerListWritable getListFromDir(byte dir) {
+ return edges[dir & DirectionFlag.DIR_MASK];
}
- public void setFFList(VKmerListWritable forwardForwardList) {
- this.edges[DirectionFlag.DIR_FF].setCopy(forwardForwardList);
- }
-
- public void setFRList(VKmerListWritable forwardReverseList) {
- this.edges[DirectionFlag.DIR_FR].setCopy(forwardReverseList);
- }
-
- public void setRFList(VKmerListWritable reverseForwardList) {
- this.edges[DirectionFlag.DIR_RF].setCopy(reverseForwardList);
- }
-
- public void setRRList(VKmerListWritable reverseReverseList) {
- this.edges[DirectionFlag.DIR_RR].setCopy(reverseReverseList);
- }
-
- public VKmerListWritable getListFromDir(byte dir) {
- switch (dir & DirectionFlag.DIR_MASK) {
- case DirectionFlag.DIR_FF:
- return getFFList();
- case DirectionFlag.DIR_FR:
- return getFRList();
- case DirectionFlag.DIR_RF:
- return getRFList();
- case DirectionFlag.DIR_RR:
- return getRRList();
- default:
- throw new RuntimeException("Unrecognized direction in getListFromDir: " + dir);
- }
+ public void setEdgeList(byte dir, VKmerListWritable edgeList) {
+ this.edges[dir & DirectionFlag.DIR_MASK].setCopy(edgeList);
+ }
+
+ public PositionListWritable getThreadList(byte dir) {
+ return threads[dir & DirectionFlag.DIR_MASK];
+ }
+
+ public void setThreadList(byte dir, PositionListWritable threadList) {
+ this.threads[dir & DirectionFlag.DIR_MASK].set(threadList);
}
/**
diff --git a/genomix/genomix-hadoop/src/main/java/edu/uci/ics/genomix/hadoop/contrailgraphbuilding/GenomixMapper.java b/genomix/genomix-hadoop/src/main/java/edu/uci/ics/genomix/hadoop/contrailgraphbuilding/GenomixMapper.java
index 39a7535..88b0339 100644
--- a/genomix/genomix-hadoop/src/main/java/edu/uci/ics/genomix/hadoop/contrailgraphbuilding/GenomixMapper.java
+++ b/genomix/genomix-hadoop/src/main/java/edu/uci/ics/genomix/hadoop/contrailgraphbuilding/GenomixMapper.java
@@ -12,6 +12,7 @@
import org.apache.hadoop.mapred.OutputCollector;
import org.apache.hadoop.mapred.Reporter;
+import edu.uci.ics.genomix.type.NodeWritable.DirectionFlag;
import edu.uci.ics.genomix.type.VKmerBytesWritable;
import edu.uci.ics.genomix.type.VKmerListWritable;
import edu.uci.ics.genomix.type.NodeWritable;
@@ -144,12 +145,12 @@
case FORWARD:
edgeListForPreKmer.reset();
edgeListForPreKmer.append(preForwardKmer);
- outputNode.setRRList(edgeListForPreKmer);
+ outputNode.setEdgeList(DirectionFlag.DIR_RR, edgeListForPreKmer);
break;
case REVERSE:
edgeListForPreKmer.reset();
edgeListForPreKmer.append(preReverseKmer);
- outputNode.setRFList(edgeListForPreKmer);
+ outputNode.setEdgeList(DirectionFlag.DIR_RF, edgeListForPreKmer);
break;
}
break;
@@ -158,12 +159,12 @@
case FORWARD:
edgeListForPreKmer.reset();
edgeListForPreKmer.append(preForwardKmer);
- outputNode.setFRList(edgeListForPreKmer);
+ outputNode.setEdgeList(DirectionFlag.DIR_FR, edgeListForPreKmer);
break;
case REVERSE:
edgeListForPreKmer.reset();
edgeListForPreKmer.append(preReverseKmer);
- outputNode.setFFList(edgeListForPreKmer);
+ outputNode.setEdgeList(DirectionFlag.DIR_FF, edgeListForPreKmer);
break;
}
break;
@@ -177,12 +178,12 @@
case FORWARD:
edgeListForNextKmer.reset();
edgeListForNextKmer.append(nextForwardKmer);
- outputNode.setFFList(edgeListForNextKmer);
+ outputNode.setEdgeList(DirectionFlag.DIR_FF, edgeListForNextKmer);
break;
case REVERSE:
edgeListForNextKmer.reset();
edgeListForNextKmer.append(nextReverseKmer);
- outputNode.setFRList(edgeListForNextKmer);
+ outputNode.setEdgeList(DirectionFlag.DIR_FR, edgeListForNextKmer);
break;
}
break;
@@ -191,12 +192,12 @@
case FORWARD:
edgeListForNextKmer.reset();
edgeListForNextKmer.append(nextForwardKmer);
- outputNode.setRFList(edgeListForNextKmer);
+ outputNode.setEdgeList(DirectionFlag.DIR_RF, edgeListForNextKmer);
break;
case REVERSE:
edgeListForNextKmer.reset();
edgeListForNextKmer.append(nextReverseKmer);
- outputNode.setRRList(edgeListForNextKmer);
+ outputNode.setEdgeList(DirectionFlag.DIR_RR, edgeListForNextKmer);
break;
}
break;
diff --git a/genomix/genomix-hadoop/src/main/java/edu/uci/ics/genomix/hadoop/contrailgraphbuilding/GenomixReducer.java b/genomix/genomix-hadoop/src/main/java/edu/uci/ics/genomix/hadoop/contrailgraphbuilding/GenomixReducer.java
index e8e41c4..716b3d6 100644
--- a/genomix/genomix-hadoop/src/main/java/edu/uci/ics/genomix/hadoop/contrailgraphbuilding/GenomixReducer.java
+++ b/genomix/genomix-hadoop/src/main/java/edu/uci/ics/genomix/hadoop/contrailgraphbuilding/GenomixReducer.java
@@ -10,6 +10,7 @@
import org.apache.hadoop.mapred.Reporter;
import edu.uci.ics.genomix.type.NodeWritable;
+import edu.uci.ics.genomix.type.NodeWritable.DirectionFlag;
import edu.uci.ics.genomix.type.VKmerBytesWritable;
@SuppressWarnings("deprecation")
@@ -38,10 +39,9 @@
while (values.hasNext()) {
tmpNode.set(values.next());
outputNode.getNodeIdList().unionUpdate(tmpNode.getNodeIdList());
- outputNode.getFFList().unionUpdate(tmpNode.getFFList()); //appendList need to check if insert node exists
- outputNode.getFRList().unionUpdate(tmpNode.getFRList());
- outputNode.getRFList().unionUpdate(tmpNode.getRFList());
- outputNode.getRRList().unionUpdate(tmpNode.getRRList());
+ for (byte d: DirectionFlag.values) {
+ outputNode.getListFromDir(d).unionUpdate(tmpNode.getListFromDir(d));
+ }
averageCoverage += tmpNode.getAvgCoverage();
}
outputNode.setAvgCoverage(averageCoverage);
diff --git a/genomix/genomix-hadoop/src/main/java/edu/uci/ics/genomix/hadoop/graph/GenerateGraphViz.java b/genomix/genomix-hadoop/src/main/java/edu/uci/ics/genomix/hadoop/graph/GenerateGraphViz.java
index d5f16c2..bad818b 100644
--- a/genomix/genomix-hadoop/src/main/java/edu/uci/ics/genomix/hadoop/graph/GenerateGraphViz.java
+++ b/genomix/genomix-hadoop/src/main/java/edu/uci/ics/genomix/hadoop/graph/GenerateGraphViz.java
@@ -12,6 +12,7 @@
import edu.uci.ics.genomix.type.NodeWritable;
import edu.uci.ics.genomix.type.VKmerBytesWritable;
+import edu.uci.ics.genomix.type.NodeWritable.DirectionFlag;
public class GenerateGraphViz {
@@ -68,22 +69,22 @@
public static String convertEdgeToGraph(String outputNode, NodeWritable value){
String outputEdge = "";
Iterator<VKmerBytesWritable> kmerIterator;
- kmerIterator = value.getFFList().iterator();
+ kmerIterator = value.getListFromDir(DirectionFlag.DIR_FF).iterator();
while(kmerIterator.hasNext()){
VKmerBytesWritable edge = kmerIterator.next();
outputEdge += outputNode + " -> " + edge.toString() + "[color = \"black\" label =\"FF\"]\n";
}
- kmerIterator = value.getFRList().iterator();
+ kmerIterator = value.getListFromDir(DirectionFlag.DIR_FR).iterator();
while(kmerIterator.hasNext()){
VKmerBytesWritable edge = kmerIterator.next();
outputEdge += outputNode + " -> " + edge.toString() + "[color = \"blue\" label =\"FR\"]\n";
}
- kmerIterator = value.getRFList().iterator();
+ kmerIterator = value.getListFromDir(DirectionFlag.DIR_RF).iterator();
while(kmerIterator.hasNext()){
VKmerBytesWritable edge = kmerIterator.next();
outputEdge += outputNode + " -> " + edge.toString() + "[color = \"green\" label =\"RF\"]\n";
}
- kmerIterator = value.getRRList().iterator();
+ kmerIterator = value.getListFromDir(DirectionFlag.DIR_RR).iterator();
while(kmerIterator.hasNext()){
VKmerBytesWritable edge = kmerIterator.next();
outputEdge += outputNode + " -> " + edge.toString() + "[color = \"red\" label =\"RR\"]\n";
diff --git a/genomix/genomix-hyracks/src/main/java/edu/uci/ics/genomix/hyracks/newgraph/dataflow/ReadsKeyValueParserFactory.java b/genomix/genomix-hyracks/src/main/java/edu/uci/ics/genomix/hyracks/newgraph/dataflow/ReadsKeyValueParserFactory.java
index bdc8627..81f5576 100644
--- a/genomix/genomix-hyracks/src/main/java/edu/uci/ics/genomix/hyracks/newgraph/dataflow/ReadsKeyValueParserFactory.java
+++ b/genomix/genomix-hyracks/src/main/java/edu/uci/ics/genomix/hyracks/newgraph/dataflow/ReadsKeyValueParserFactory.java
@@ -18,6 +18,7 @@
import java.nio.ByteBuffer;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
+
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.apache.hadoop.io.LongWritable;
@@ -27,7 +28,7 @@
import edu.uci.ics.genomix.type.NodeWritable;
import edu.uci.ics.genomix.type.PositionListWritable;
import edu.uci.ics.genomix.type.PositionWritable;
-
+import edu.uci.ics.genomix.type.NodeWritable.DirectionFlag;
import edu.uci.ics.hyracks.api.comm.IFrameWriter;
import edu.uci.ics.hyracks.api.context.IHyracksTaskContext;
import edu.uci.ics.hyracks.api.dataflow.value.ISerializerDeserializer;
@@ -177,20 +178,20 @@
public void setEdgeListForCurAndNextKmer(KmerDir curKmerDir, NodeWritable curNode, KmerDir nextKmerDir,
NodeWritable nextNode) {
if (curKmerDir == KmerDir.FORWARD && nextKmerDir == KmerDir.FORWARD) {
- curNode.getFFList().append(kmerSize, nextForwardKmer);
- nextNode.getRRList().append(kmerSize, curForwardKmer);
+ curNode.getListFromDir(DirectionFlag.DIR_FF).append(kmerSize, nextForwardKmer);
+ nextNode.getListFromDir(DirectionFlag.DIR_RR).append(kmerSize, curForwardKmer);
}
if (curKmerDir == KmerDir.FORWARD && nextKmerDir == KmerDir.REVERSE) {
- curNode.getFRList().append(kmerSize, nextReverseKmer);
- nextNode.getFRList().append(kmerSize, curForwardKmer);
+ curNode.getListFromDir(DirectionFlag.DIR_FR).append(kmerSize, nextReverseKmer);
+ nextNode.getListFromDir(DirectionFlag.DIR_FR).append(kmerSize, curForwardKmer);
}
if (curKmerDir == KmerDir.REVERSE && nextKmerDir == KmerDir.FORWARD) {
- curNode.getRFList().append(kmerSize, nextForwardKmer);
- nextNode.getRFList().append(kmerSize, curReverseKmer);
+ curNode.getListFromDir(DirectionFlag.DIR_RF).append(kmerSize, nextForwardKmer);
+ nextNode.getListFromDir(DirectionFlag.DIR_RF).append(kmerSize, curReverseKmer);
}
if (curKmerDir == KmerDir.REVERSE && nextKmerDir == KmerDir.REVERSE) {
- curNode.getRRList().append(kmerSize, nextReverseKmer);
- nextNode.getFFList().append(kmerSize, curReverseKmer);
+ curNode.getListFromDir(DirectionFlag.DIR_RR).append(kmerSize, nextReverseKmer);
+ nextNode.getListFromDir(DirectionFlag.DIR_FF).append(kmerSize, curReverseKmer);
}
}
diff --git a/genomix/genomix-pregelix/src/main/java/edu/uci/ics/genomix/pregelix/format/InitialGraphCleanInputFormat.java b/genomix/genomix-pregelix/src/main/java/edu/uci/ics/genomix/pregelix/format/InitialGraphCleanInputFormat.java
index 5943f0a..7a09c3c 100644
--- a/genomix/genomix-pregelix/src/main/java/edu/uci/ics/genomix/pregelix/format/InitialGraphCleanInputFormat.java
+++ b/genomix/genomix-pregelix/src/main/java/edu/uci/ics/genomix/pregelix/format/InitialGraphCleanInputFormat.java
@@ -72,10 +72,10 @@
*/
node.set(getRecordReader().getCurrentValue());
vertexValue.setNodeIdList(node.getNodeIdList());
- vertexValue.setFFList(node.getFFList());
- vertexValue.setFRList(node.getFRList());
- vertexValue.setRFList(node.getRFList());
- vertexValue.setRRList(node.getRRList());
+ vertexValue.setFFList(node.getListFromDir(DirectionFlag.DIR_FF));
+ vertexValue.setFRList(node.getListFromDir(DirectionFlag.DIR_FR));
+ vertexValue.setRFList(node.getListFromDir(DirectionFlag.DIR_RF));
+ vertexValue.setRRList(node.getListFromDir(DirectionFlag.DIR_RR));
// TODO make this more efficient (don't use toString)
vertexValue.setActualKmer(new VKmerBytesWritable(vertexId));
vertexValue.setState(State.IS_NON);
diff --git a/genomix/genomix-pregelix/src/main/java/edu/uci/ics/genomix/pregelix/graph/GenerateGraphViz.java b/genomix/genomix-pregelix/src/main/java/edu/uci/ics/genomix/pregelix/graph/GenerateGraphViz.java
index 89abdc2..b60d33f 100644
--- a/genomix/genomix-pregelix/src/main/java/edu/uci/ics/genomix/pregelix/graph/GenerateGraphViz.java
+++ b/genomix/genomix-pregelix/src/main/java/edu/uci/ics/genomix/pregelix/graph/GenerateGraphViz.java
@@ -13,6 +13,7 @@
import edu.uci.ics.genomix.pregelix.io.VertexValueWritable;
import edu.uci.ics.genomix.type.NodeWritable;
import edu.uci.ics.genomix.type.VKmerBytesWritable;
+import edu.uci.ics.genomix.type.NodeWritable.DirectionFlag;
public class GenerateGraphViz {
@@ -121,22 +122,22 @@
public static String convertEdgeToGraph(String outputNode, NodeWritable value){
String outputEdge = "";
Iterator<VKmerBytesWritable> kmerIterator;
- kmerIterator = value.getFFList().iterator();
+ kmerIterator = value.getListFromDir(DirectionFlag.DIR_FF).iterator();
while(kmerIterator.hasNext()){
VKmerBytesWritable edge = kmerIterator.next();
outputEdge += outputNode + " -> " + edge.toString() + "[color = \"black\" label =\"FF\"]\n";
}
- kmerIterator = value.getFRList().iterator();
+ kmerIterator = value.getListFromDir(DirectionFlag.DIR_FR).iterator();
while(kmerIterator.hasNext()){
VKmerBytesWritable edge = kmerIterator.next();
outputEdge += outputNode + " -> " + edge.toString() + "[color = \"blue\" label =\"FR\"]\n";
}
- kmerIterator = value.getRFList().iterator();
+ kmerIterator = value.getListFromDir(DirectionFlag.DIR_RF).iterator();
while(kmerIterator.hasNext()){
VKmerBytesWritable edge = kmerIterator.next();
outputEdge += outputNode + " -> " + edge.toString() + "[color = \"green\" label =\"RF\"]\n";
}
- kmerIterator = value.getRRList().iterator();
+ kmerIterator = value.getListFromDir(DirectionFlag.DIR_RR).iterator();
while(kmerIterator.hasNext()){
VKmerBytesWritable edge = kmerIterator.next();
outputEdge += outputNode + " -> " + edge.toString() + "[color = \"red\" label =\"RR\"]\n";