fixed the racing problem
diff --git a/genomix/genomix-hyracks/src/main/java/edu/uci/ics/genomix/hyracks/dataflow/MapReadToNodeOperator.java b/genomix/genomix-hyracks/src/main/java/edu/uci/ics/genomix/hyracks/dataflow/MapReadToNodeOperator.java
index 2d92303..e7f9ee2 100644
--- a/genomix/genomix-hyracks/src/main/java/edu/uci/ics/genomix/hyracks/dataflow/MapReadToNodeOperator.java
+++ b/genomix/genomix-hyracks/src/main/java/edu/uci/ics/genomix/hyracks/dataflow/MapReadToNodeOperator.java
@@ -136,22 +136,6 @@
outputNode(curNodeEntry);
}
- /**
- * The neighbor list is store in the next next node
- * (3,2) [(1,0),(2,0)] will become the outgoing list of node (3,1)
- * (3,1) [(1,0),(2,0)]
- *
- * @param curNodeEntry2
- * @param nextNodeEntry2
- */
- // private void setOutgoingByNext(NodeReference curNodeEntry2, NodeReference nextNodeEntry2) {
- // if (nextNodeEntry2 == null) {
- // curNodeEntry2.getOutgoingList().reset();
- // } else {
- // curNodeEntry2.setOutgoingList(nextNodeEntry2.getOutgoingList());
- // }
- // }
-
private void resetNode(NodeReference node, int readID, byte posInRead, int offset, boolean isInitial) {
node.reset(kmerSize);
node.setNodeID(readID, posInRead);
diff --git a/genomix/genomix-hyracks/src/main/java/edu/uci/ics/genomix/hyracks/dataflow/ReadsKeyValueParserFactory.java b/genomix/genomix-hyracks/src/main/java/edu/uci/ics/genomix/hyracks/dataflow/ReadsKeyValueParserFactory.java
index 855be64..85aee5b 100644
--- a/genomix/genomix-hyracks/src/main/java/edu/uci/ics/genomix/hyracks/dataflow/ReadsKeyValueParserFactory.java
+++ b/genomix/genomix-hyracks/src/main/java/edu/uci/ics/genomix/hyracks/dataflow/ReadsKeyValueParserFactory.java
@@ -45,19 +45,18 @@
public static final int OutputKmerField = 0;
public static final int OutputPosition = 1;
- private KmerBytesWritable kmer;
- private PositionReference pos;
- private boolean bReversed;
+
+ private final boolean bReversed;
private final int readLength;
+ private final int kmerSize;
public static final RecordDescriptor readKmerOutputRec = new RecordDescriptor(new ISerializerDeserializer[] { null,
null });
public ReadsKeyValueParserFactory(int readlength, int k, boolean bGenerateReversed) {
bReversed = bGenerateReversed;
- kmer = new KmerBytesWritable(k);
- pos = new PositionReference();
this.readLength = readlength;
+ this.kmerSize = k;
}
@Override
@@ -69,6 +68,9 @@
return new IKeyValueParser<LongWritable, Text>() {
+ private KmerBytesWritable kmer = new KmerBytesWritable(kmerSize);
+ private PositionReference pos = new PositionReference();
+
@Override
public void parse(LongWritable key, Text value, IFrameWriter writer) throws HyracksDataException {
String[] geneLine = value.toString().split("\\t"); // Read the Real Gene Line
@@ -97,25 +99,24 @@
private void SplitReads(int readID, byte[] array, IFrameWriter writer) {
/** first kmer */
- int k = kmer.getKmerLength();
- if (k >= array.length) {
+ if (kmerSize >= array.length) {
return;
}
kmer.setByRead(array, 0);
InsertToFrame(kmer, readID, 0, writer);
/** middle kmer */
- for (int i = k; i < array.length; i++) {
+ for (int i = kmerSize; i < array.length; i++) {
kmer.shiftKmerWithNextChar(array[i]);
- InsertToFrame(kmer, readID, i - k + 1, writer);
+ InsertToFrame(kmer, readID, i - kmerSize + 1, writer);
}
if (bReversed) {
/** first kmer */
kmer.setByReadReverse(array, 0);
- InsertToFrame(kmer, -readID, array.length - k, writer);
+ InsertToFrame(kmer, -readID, array.length - kmerSize, writer);
/** middle kmer */
- for (int i = k; i < array.length; i++) {
+ for (int i = kmerSize; i < array.length; i++) {
kmer.shiftKmerWithPreCode(GeneCode.getPairedCodeFromSymbol(array[i]));
InsertToFrame(kmer, -readID, array.length - i - 1, writer);
}
@@ -149,8 +150,6 @@
@Override
public void open(IFrameWriter writer) throws HyracksDataException {
- // TODO Auto-generated method stub
-
}
@Override
diff --git a/genomix/genomix-hyracks/src/main/java/edu/uci/ics/genomix/hyracks/job/JobGenCheckReader.java b/genomix/genomix-hyracks/src/main/java/edu/uci/ics/genomix/hyracks/job/JobGenCheckReader.java
index c6a69d4..28e4ff5 100644
--- a/genomix/genomix-hyracks/src/main/java/edu/uci/ics/genomix/hyracks/job/JobGenCheckReader.java
+++ b/genomix/genomix-hyracks/src/main/java/edu/uci/ics/genomix/hyracks/job/JobGenCheckReader.java
@@ -56,13 +56,15 @@
*
*/
private static final long serialVersionUID = 1L;
- private KmerBytesWritable kmer = new KmerBytesWritable(kmerSize);
- private PositionWritable pos = new PositionWritable();
+
@Override
public ITupleWriter getTupleWriter(IHyracksTaskContext ctx) throws HyracksDataException {
return new ITupleWriter(){
+ private KmerBytesWritable kmer = new KmerBytesWritable(kmerSize);
+ private PositionWritable pos = new PositionWritable();
+
@Override
public void open(DataOutput output) throws HyracksDataException {
// TODO Auto-generated method stub
diff --git a/genomix/genomix-hyracks/src/test/java/edu/uci/ics/genomix/hyracks/test/JobRunStepByStepTest.java b/genomix/genomix-hyracks/src/test/java/edu/uci/ics/genomix/hyracks/test/JobRunStepByStepTest.java
index df25fd7..745f62f 100644
--- a/genomix/genomix-hyracks/src/test/java/edu/uci/ics/genomix/hyracks/test/JobRunStepByStepTest.java
+++ b/genomix/genomix-hyracks/src/test/java/edu/uci/ics/genomix/hyracks/test/JobRunStepByStepTest.java
@@ -54,7 +54,7 @@
private JobConf conf = new JobConf();
private int numberOfNC = 2;
- private int numPartitionPerMachine = 1;
+ private int numPartitionPerMachine = 2;
private Driver driver;