Gnomix updated
git-svn-id: https://hyracks.googlecode.com/svn/branches/fullstack_genomix@2951 123451ca-8445-de46-9d55-352943316053
diff --git a/genomix/genomix-core/src/main/java/edu/uci/ics/genomix/dataflow/FileScanDescriptor.java b/genomix/genomix-core/src/main/java/edu/uci/ics/genomix/dataflow/FileScanDescriptor.java
index 21fe361..298a989 100644
--- a/genomix/genomix-core/src/main/java/edu/uci/ics/genomix/dataflow/FileScanDescriptor.java
+++ b/genomix/genomix-core/src/main/java/edu/uci/ics/genomix/dataflow/FileScanDescriptor.java
@@ -37,7 +37,7 @@
this.k = k;
this.pathSurfix = path;
- byteNum = (byte) Math.ceil((double) k / 4.0);
+ byteNum = (int) Math.ceil((double) k / 4.0);
// recordDescriptors[0] = news RecordDescriptor(
// new ISerializerDeserializer[] {
// UTF8StringSerializerDeserializer.INSTANCE });
@@ -75,6 +75,7 @@
private byte filter0;
private byte filter1;
private byte filter2;
+ private byte filter3;
@SuppressWarnings("resource")
@Override
@@ -88,6 +89,7 @@
filter0 = (byte) 0xC0;
filter1 = (byte) 0xFC;
filter2 = 0;
+ filter3 = 3;
int r = byteNum * 8 - 2 * k;
r = 8 - r;
@@ -95,6 +97,9 @@
filter2 <<= 1;
filter2 |= 1;
}
+ for(int i = 0; i < r-1 ; i++){
+ filter3 <<= 1;
+ }
try {// one try with multiple catch?
@@ -170,8 +175,8 @@
}
count += 2;
if (count % 8 == 0 && byteNum != bcount + 1) {
- bcount += 1;
bytes[byteNum-bcount] = l;
+ bcount += 1;
count = 0;
l = 0;
}
@@ -229,9 +234,9 @@
void MoveKmer(byte[] bytes, byte c) {
int i = byteNum;
bytes[i] <<= 2;
- bytes[i] &= filter2;
+ bytes[i] &= filter1;
i -= 1;
- while (i > 0) {
+ while (i > 1) {
byte f = (byte) (bytes[i] & filter0);
f >>= 6;
f &= 3;
@@ -240,6 +245,9 @@
bytes[i] &= filter1;
i -= 1;
}
+ bytes[2] |= (byte) (bytes[1]&filter3);
+ bytes[1] <<=2;
+ bytes[1] &= filter2;
bytes[1] |= ConvertSymbol(c);
}
diff --git a/genomix/genomix-core/src/main/java/edu/uci/ics/genomix/dataflow/ReadsKeyValueParserFactory.java b/genomix/genomix-core/src/main/java/edu/uci/ics/genomix/dataflow/ReadsKeyValueParserFactory.java
index efcb779..1876346 100644
--- a/genomix/genomix-core/src/main/java/edu/uci/ics/genomix/dataflow/ReadsKeyValueParserFactory.java
+++ b/genomix/genomix-core/src/main/java/edu/uci/ics/genomix/dataflow/ReadsKeyValueParserFactory.java
@@ -26,6 +26,7 @@
private byte filter0;
private byte filter1;
private byte filter2;
+ private byte filter3;
public ReadsKeyValueParserFactory(int k) {
this.k = k;
@@ -40,6 +41,9 @@
filter2 <<= 1;
filter2 |= 1;
}
+ for(int i = 0; i < r-1 ; i++){
+ filter3 <<= 1;
+ }
}
@Override
@@ -104,8 +108,8 @@
}
count += 2;
if (count % 8 == 0 && byteNum != bcount + 1) {
- bcount += 1;
bytes[byteNum-bcount] = l;
+ bcount += 1;
count = 0;
l = 0;
}
@@ -163,9 +167,9 @@
void MoveKmer(byte[] bytes, byte c) {
int i = byteNum;
bytes[i] <<= 2;
- bytes[i] &= filter2;
+ bytes[i] &= filter1;
i -= 1;
- while (i > 0) {
+ while (i > 1) {
byte f = (byte) (bytes[i] & filter0);
f >>= 6;
f &= 3;
@@ -174,6 +178,9 @@
bytes[i] &= filter1;
i -= 1;
}
+ bytes[2] |= (byte) (bytes[1]&filter3);
+ bytes[1] <<=2;
+ bytes[1] &= filter2;
bytes[1] |= ConvertSymbol(c);
}