use local maximum (not min) for h4
diff --git a/genomix/genomix-hadoop/src/main/java/edu/uci/ics/genomix/hadoop/graphclean/mergepaths/h4/MergePathsH4.java b/genomix/genomix-hadoop/src/main/java/edu/uci/ics/genomix/hadoop/graphclean/mergepaths/h4/MergePathsH4.java
index c11b6f0..46e7cb9 100644
--- a/genomix/genomix-hadoop/src/main/java/edu/uci/ics/genomix/hadoop/graphclean/mergepaths/h4/MergePathsH4.java
+++ b/genomix/genomix-hadoop/src/main/java/edu/uci/ics/genomix/hadoop/graphclean/mergepaths/h4/MergePathsH4.java
@@ -39,17 +39,12 @@
 import org.apache.hadoop.mapred.SequenceFileOutputFormat;
 import org.apache.hadoop.mapred.lib.IdentityMapper;
 import org.apache.hadoop.mapred.lib.MultipleOutputs;
-import org.apache.hadoop.mapred.lib.NullOutputFormat;
 import org.apache.hadoop.util.Tool;
 import org.apache.hadoop.util.ToolRunner;
 
-import edu.uci.ics.genomix.hadoop.oldtype.VKmerBytesWritable;
 import edu.uci.ics.genomix.hadoop.pmcommon.MergePathMultiSeqOutputFormat;
-import edu.uci.ics.genomix.hadoop.pmcommon.MergePathValueWritable;
 import edu.uci.ics.genomix.hadoop.pmcommon.NodeWithFlagWritable;
 import edu.uci.ics.genomix.hadoop.pmcommon.NodeWithFlagWritable.MessageFlag;
-import edu.uci.ics.genomix.hadoop.pmcommon.PathNodeInitial;
-import edu.uci.ics.genomix.hadoop.pmcommon.PathNodeInitial.PathNodeInitialReducer;
 import edu.uci.ics.genomix.type.NodeWritable;
 import edu.uci.ics.genomix.type.PositionWritable;
 
@@ -91,8 +86,8 @@
         private PositionWritable curID;
         private PositionWritable nextID;
         private PositionWritable prevID;
-        private boolean hasNext;
-        private boolean hasPrev;
+        private boolean mergeableNext;
+        private boolean mergeablePrev;
         private boolean curHead;
         private boolean nextHead;
         private boolean prevHead;
@@ -177,7 +172,7 @@
             inFlag = value.getFlag();
             curNode.set(value.getNode());
             curID.set(curNode.getNodeID());
-
+            mergeDir = MergeDir.NO_MERGE; // no merge to happen
             headFlag = (byte) (MessageFlag.IS_HEAD & inFlag);
             tailFlag = (byte) (MessageFlag.IS_TAIL & inFlag);
             mergeMsgFlag = (byte) (headFlag | tailFlag);
@@ -185,42 +180,40 @@
             curHead = isNodeRandomHead(curID);
             // the headFlag and tailFlag's indicate if the node is at the beginning or end of a simple path. 
             // We prevent merging towards non-path nodes
-            hasNext = setNextInfo(curNode) && tailFlag == 0;
-            hasPrev = setPrevInfo(curNode) && headFlag == 0;
-            mergeDir = MergeDir.NO_MERGE; // no merge to happen
+            mergeableNext = setNextInfo(curNode) && tailFlag == 0;
+            mergeablePrev = setPrevInfo(curNode) && headFlag == 0;
 
             // decide where we're going to merge to
-            if (hasNext || hasPrev) {
+            if (mergeableNext || mergeablePrev) {
                 if (curHead) {
-                    if (hasNext && !nextHead) {
+                    if (mergeableNext && !nextHead) {
                         // merge forward
                         mergeMsgFlag |= nextDir;
                         mergeDir = MergeDir.FORWARD;
-                    } else if (hasPrev && !prevHead) {
+                    } else if (mergeablePrev && !prevHead) {
                         // merge backwards
                         mergeMsgFlag |= prevDir;
                         mergeDir = MergeDir.BACKWARD;
                     }
                 } else {
                     // I'm a tail
-                    if (hasNext && hasPrev) {
-                        // TODO change to local maximum
-                        if ((!nextHead && !prevHead) && (curID.compareTo(nextID) < 0 && curID.compareTo(prevID) < 0)) {
+                    if (mergeableNext && mergeablePrev) {
+                        if ((!nextHead && !prevHead) && (curID.compareTo(nextID) > 0 && curID.compareTo(prevID) > 0)) {
                             // tails on both sides, and I'm the "local minimum"
                             // compress me towards the tail in forward dir
                             mergeMsgFlag |= nextDir;
                             mergeDir = MergeDir.FORWARD;
                         }
-                    } else if (!hasPrev) {
+                    } else if (!mergeablePrev) {
                         // no previous node
-                        if (!nextHead && curID.compareTo(nextID) < 0) {
+                        if (!nextHead && curID.compareTo(nextID) > 0) {
                             // merge towards tail in forward dir
                             mergeMsgFlag |= nextDir;
                             mergeDir = MergeDir.FORWARD;
                         }
-                    } else if (!hasNext) {
+                    } else if (!mergeableNext) {
                         // no next node
-                        if (!prevHead && curID.compareTo(prevID) < 0) {
+                        if (!prevHead && curID.compareTo(prevID) > 0) {
                             // merge towards tail in reverse dir
                             mergeMsgFlag |= prevDir;
                             mergeDir = MergeDir.BACKWARD;