Fix NodeWritable and Finish contrail-graph Mapper/Reducer
diff --git a/genomix/genomix-data/src/main/java/edu/uci/ics/genomix/type/KmerListWritable.java b/genomix/genomix-data/src/main/java/edu/uci/ics/genomix/type/KmerListWritable.java
index 09d353d..3349aaf 100644
--- a/genomix/genomix-data/src/main/java/edu/uci/ics/genomix/type/KmerListWritable.java
+++ b/genomix/genomix-data/src/main/java/edu/uci/ics/genomix/type/KmerListWritable.java
@@ -17,8 +17,8 @@
     protected byte[] storage;
     protected int offset;
     protected int valueCount;
-    public int kmerByteSize = 2; 
-    public int kmerlength = 5;
+    public int kmerByteSize = 0; 
+    public int kmerlength = 0;
     protected static final byte[] EMPTY = {};
     
     protected KmerBytesWritable posIter = new KmerBytesWritable();
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 76a6171..19f6374 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
@@ -10,11 +10,6 @@
 
 public class NodeWritable implements WritableComparable<NodeWritable>, Serializable{
 
-//    public static class KMER{
-//        public static final byte EXIST = 0;
-//        public static final byte NON_EXIST = 1;
-//    }
-    
     private static final long serialVersionUID = 1L;
     public static final NodeWritable EMPTY_NODE = new NodeWritable(0);
     
@@ -24,7 +19,7 @@
     private KmerListWritable reverseForwardList;
     private KmerListWritable reverseReverseList;
     private KmerBytesWritable kmer;
-//    private byte kmerMark;
+    private int kmerlength = 0;
     
     // merge/update directions
     public static class DirectionFlag {
@@ -39,14 +34,14 @@
         this(0);
     }
     
-    public NodeWritable(int kmerSize) {
+    public NodeWritable(int kmerlenth) {
+        this.kmerlength = kmerlenth;
         nodeIdList = new PositionListWritable();
-        forwardForwardList = new KmerListWritable(kmerSize);
-        forwardReverseList = new KmerListWritable(kmerSize);
-        reverseForwardList = new KmerListWritable(kmerSize);
-        reverseReverseList = new KmerListWritable(kmerSize);
-        kmer = new KmerBytesWritable(kmerSize);
-//        kmerMark = KMER.NON_EXIST;
+        forwardForwardList = new KmerListWritable(kmerlenth);
+        forwardReverseList = new KmerListWritable(kmerlenth);
+        reverseForwardList = new KmerListWritable(kmerlenth);
+        reverseReverseList = new KmerListWritable(kmerlenth);
+        kmer = new KmerBytesWritable(); //in graph construction - not set kmerlength Optimization: VKmer
     }
     
     public NodeWritable(PositionListWritable nodeIdList, KmerListWritable FFList, KmerListWritable FRList,
@@ -68,17 +63,16 @@
         this.reverseForwardList.set(RFList);
         this.reverseReverseList.set(RRList);
         this.kmer.set(kmer);
-//        kmerMark = KMER.EXIST;
     }
 
     public void reset(int kmerSize) {
-        nodeIdList.reset();
-        forwardForwardList.reset(kmerSize);
-        forwardReverseList.reset(kmerSize);
-        reverseForwardList.reset(kmerSize);
-        reverseReverseList.reset(kmerSize);
-        kmer.reset(kmerSize);
-//        kmerMark = KMER.NON_EXIST;
+        this.kmerlength = kmerSize;
+        this.nodeIdList.reset();
+        this.forwardForwardList.reset(kmerSize);
+        this.forwardReverseList.reset(kmerSize);
+        this.reverseForwardList.reset(kmerSize);
+        this.reverseReverseList.reset(kmerSize);
+        this.kmer.reset(0);
     }
     
     
@@ -95,7 +89,6 @@
     }
 
     public void setKmer(KmerBytesWritable kmer) {
-//        kmerMark = KMER.EXIST;
         this.kmer.set(kmer);
     }
     
@@ -149,28 +142,28 @@
                 throw new RuntimeException("Unrecognized direction in getListFromDir: " + dir);
         }
     }
+	
     @Override
     public void write(DataOutput out) throws IOException {
-//        out.writeByte(kmerMark);
-//        this.nodeIdList.write(out);
+        out.writeInt(kmerlength);
+        this.nodeIdList.write(out);
         this.forwardForwardList.write(out);
-//        this.forwardReverseList.write(out);
-//        this.reverseForwardList.write(out);
-//        this.reverseReverseList.write(out);
-//        if(kmerMark == KMER.EXIST) 
-//        this.kmer.write(out);
+        this.forwardReverseList.write(out);
+        this.reverseForwardList.write(out);
+        this.reverseReverseList.write(out);
+        this.kmer.write(out);
     }
 
     @Override
     public void readFields(DataInput in) throws IOException {
-//        kmerMark = in.readByte();
-//        this.nodeIdList.readFields(in);
+        this.kmerlength = in.readInt();
+        reset(kmerlength);
+        this.nodeIdList.readFields(in);
         this.forwardForwardList.readFields(in);
-//        this.forwardReverseList.readFields(in);
-//        this.reverseForwardList.readFields(in);
-//        this.reverseReverseList.readFields(in);
-//        if(kmerMark == KMER.EXIST)
-//        this.kmer.readFields(in);
+        this.forwardReverseList.readFields(in);
+        this.reverseForwardList.readFields(in);
+        this.reverseReverseList.readFields(in);
+        this.kmer.readFields(in);
     }
 
     @Override
@@ -199,13 +192,13 @@
     @Override
     public String toString() {
         StringBuilder sbuilder = new StringBuilder();
-        sbuilder.append('(');
+        sbuilder.append('{');
         sbuilder.append(nodeIdList.toString()).append('\t');
         sbuilder.append(forwardForwardList.toString()).append('\t');
         sbuilder.append(forwardReverseList.toString()).append('\t');
         sbuilder.append(reverseForwardList.toString()).append('\t');
         sbuilder.append(reverseReverseList.toString()).append('\t');
-        sbuilder.append(kmer.toString()).append(')');
+        sbuilder.append(kmer.toString()).append('}');
         return sbuilder.toString();
     }
 
diff --git a/genomix/genomix-hadoop/data/webmap/test.txt b/genomix/genomix-hadoop/data/webmap/test.txt
index 17770fa..990dbd1 100644
--- a/genomix/genomix-hadoop/data/webmap/test.txt
+++ b/genomix/genomix-hadoop/data/webmap/test.txt
@@ -1 +1,3 @@
 1	AATAGAAG
+2	TATAGACC
+3	CATAGATT
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 e877504..1633c26 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
@@ -33,11 +33,6 @@
 			Reporter reporter) throws IOException {
 		outputNode.reset(KMER_SIZE);
 		
-//		//copy first item to outputNode
-//		if(values.hasNext()){
-//		    NodeWritable tmpNode = values.next();
-//		    outputNode.set(tmpNode);
-//		}
 		while (values.hasNext()) {
 		    tmpNode.set(values.next());
 		    outputNode.getNodeIdList().appendList(tmpNode.getNodeIdList());