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);

 			}