add more information for larger data debug
diff --git a/genomix/genomix-data/src/main/java/edu/uci/ics/genomix/type/PositionListWritable.java b/genomix/genomix-data/src/main/java/edu/uci/ics/genomix/type/PositionListWritable.java
index 11d0998..34fb0f6 100644
--- a/genomix/genomix-data/src/main/java/edu/uci/ics/genomix/type/PositionListWritable.java
+++ b/genomix/genomix-data/src/main/java/edu/uci/ics/genomix/type/PositionListWritable.java
@@ -132,6 +132,9 @@
public static int getCountByDataLength(int length) {
if (length % PositionWritable.LENGTH != 0) {
+ for (StackTraceElement ste : Thread.currentThread().getStackTrace()) {
+ System.out.println(ste);
+ }
throw new IllegalArgumentException("Length of positionlist is invalid");
}
return length / PositionWritable.LENGTH;
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 e7f9ee2..cddbe4d 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
@@ -149,6 +149,9 @@
// minus 1 position of the incoming list to get the correct predecessor
for (PositionWritable pos : node.getIncomingList()) {
if (pos.getPosInRead() == 0) {
+ for (StackTraceElement ste : Thread.currentThread().getStackTrace()) {
+ System.out.println(ste);
+ }
throw new IllegalArgumentException("The incoming position list contain invalid posInRead");
}
pos.set(pos.getReadID(), (byte) (pos.getPosInRead() - 1));
@@ -159,6 +162,9 @@
offset += lengthPos;
int lengthKmer = buffer.getInt(offset);
if (node.getKmer().getLength() != lengthKmer) {
+ for (StackTraceElement ste : Thread.currentThread().getStackTrace()) {
+ System.out.println(ste);
+ }
throw new IllegalStateException("Size of Kmer is invalid ");
}
setKmer(node.getKmer(), buffer.array(), offset + INT_LENGTH, isInitial);
diff --git a/genomix/genomix-hyracks/src/main/java/edu/uci/ics/genomix/hyracks/dataflow/aggregators/MergeReadIDAggregateFactory.java b/genomix/genomix-hyracks/src/main/java/edu/uci/ics/genomix/hyracks/dataflow/aggregators/MergeReadIDAggregateFactory.java
index f1ebdff..8c8c7fd 100644
--- a/genomix/genomix-hyracks/src/main/java/edu/uci/ics/genomix/hyracks/dataflow/aggregators/MergeReadIDAggregateFactory.java
+++ b/genomix/genomix-hyracks/src/main/java/edu/uci/ics/genomix/hyracks/dataflow/aggregators/MergeReadIDAggregateFactory.java
@@ -4,6 +4,8 @@
import java.io.IOException;
import java.nio.ByteBuffer;
+import edu.uci.ics.genomix.data.KmerUtil;
+import edu.uci.ics.genomix.type.PositionListWritable;
import edu.uci.ics.hyracks.api.comm.IFrameTupleAccessor;
import edu.uci.ics.hyracks.api.context.IHyracksTaskContext;
import edu.uci.ics.hyracks.api.dataflow.value.RecordDescriptor;
@@ -22,9 +24,11 @@
private static final long serialVersionUID = 1L;
private final int ValidPosCount;
+ private final int kmerLength;
public MergeReadIDAggregateFactory(int readLength, int kmerLength) {
ValidPosCount = getPositionCount(readLength, kmerLength);
+ this.kmerLength = kmerLength;
}
public static int getPositionCount(int readLength, int kmerLength) {
@@ -102,8 +106,14 @@
fieldOffset += BYTE_SIZE;
// read poslist
+ int lengthPosList = fieldBuffer.getInt(fieldOffset);
+ PositionListWritable.getCountByDataLength(lengthPosList);
fieldOffset += writeBytesToStorage(storages[posInRead], fieldBuffer, fieldOffset);
// read Kmer
+ lengthPosList = fieldBuffer.getInt(fieldOffset);
+ if (lengthPosList != KmerUtil.getByteNumFromK(kmerLength)){
+ throw new IllegalStateException("Size of Kmer is invalid ");
+ }
fieldOffset += writeBytesToStorage(storages[posInRead], fieldBuffer, fieldOffset);
positionArray.count += 1;