fix some bugs of log algorithm and prepare to verify the correctness in big data
diff --git a/genomix/genomix-pregelix/src/main/java/edu/uci/ics/genomix/pregelix/LogAlgorithmForMergeGraphVertex.java b/genomix/genomix-pregelix/src/main/java/edu/uci/ics/genomix/pregelix/LogAlgorithmForMergeGraphVertex.java
index 9947d1c..d55e64e 100644
--- a/genomix/genomix-pregelix/src/main/java/edu/uci/ics/genomix/pregelix/LogAlgorithmForMergeGraphVertex.java
+++ b/genomix/genomix-pregelix/src/main/java/edu/uci/ics/genomix/pregelix/LogAlgorithmForMergeGraphVertex.java
@@ -162,7 +162,7 @@
tmpVal.getLengthOfMergeChain(),
tmpVal.getMergeChain(),
0, tmpVal.getMergeChain().length);
- if(Kmer.GENE_CODE.getGeneCodeFromBitMap((byte)(tmpVal.getValue() & 0x0F)) == -1)
+ if(Kmer.GENE_CODE.getGeneCodeFromBitMap((byte)(tmpVal.getValue() & 0x0F)) == -1 || lastKmer == null)
voteToHalt();
else{
tmpDestVertexId = KmerUtil.shiftKmerWithNextCode(kmerSize, lastKmer,
@@ -220,15 +220,20 @@
//voteToHalt();
}
else{
- if(getVertexValue().getState() != State.START_VERTEX
+ if(getVertexValue().getState() != State.START_VERTEX && getVertexValue().getState() != State.NON_EXIST
&& getVertexValue().getState() != State.END_VERTEX && getVertexValue().getState() != State.FINAL_DELETE){
+ tmpVal.setState(State.NON_EXIST);
+ setVertexValue(tmpVal);
deleteVertex(getVertexId()); //killSelf because it doesn't receive any message
}
}
}
else if(getSuperstep()%3 == 2 && getSuperstep() <= maxIteration){
- if(tmpVal.getState() == State.TODELETE)
+ if(tmpVal.getState() == State.TODELETE && getVertexValue().getState() != State.NON_EXIST){
+ tmpVal.setState(State.NON_EXIST);
+ setVertexValue(tmpVal);
deleteVertex(getVertexId()); //killSelf
+ }
else{
if(msgIterator.hasNext()){
tmpMsg = msgIterator.next();
@@ -269,7 +274,7 @@
sendMsg(getVertexId(),tmpMsg);
}
}
- if(tmpVal.getState() == State.END_VERTEX || tmpVal.getState() == State.FINAL_DELETE)
+ if(tmpVal.getState() == State.END_VERTEX || tmpVal.getState() == State.FINAL_DELETE || tmpVal.getState() == State.NON_EXIST)
voteToHalt();
if(tmpVal.getState() == State.FINAL_VERTEX){
//String source = Kmer.recoverKmerFrom(tmpVal.getLengthOfMergeChain(), tmpVal.getMergeChain(), 0, tmpVal.getMergeChain().length);
diff --git a/genomix/genomix-pregelix/src/main/java/edu/uci/ics/genomix/pregelix/io/LogAlgorithmMessageWritable.java b/genomix/genomix-pregelix/src/main/java/edu/uci/ics/genomix/pregelix/io/LogAlgorithmMessageWritable.java
index 42f1269..3d07c5b 100644
--- a/genomix/genomix-pregelix/src/main/java/edu/uci/ics/genomix/pregelix/io/LogAlgorithmMessageWritable.java
+++ b/genomix/genomix-pregelix/src/main/java/edu/uci/ics/genomix/pregelix/io/LogAlgorithmMessageWritable.java
@@ -122,7 +122,7 @@
public void readFields(DataInput in) throws IOException {
// TODO Auto-generated method stub
lengthOfChain = in.readInt();
- if(lengthOfChain != 0){
+ if(lengthOfChain > 0){
chainVertexId = new byte[(lengthOfChain-1)/4 + 1];
in.readFully(chainVertexId);
}
diff --git a/genomix/genomix-pregelix/src/main/java/edu/uci/ics/genomix/pregelix/io/MessageWritable.java b/genomix/genomix-pregelix/src/main/java/edu/uci/ics/genomix/pregelix/io/MessageWritable.java
index 2976c87..3872514 100644
--- a/genomix/genomix-pregelix/src/main/java/edu/uci/ics/genomix/pregelix/io/MessageWritable.java
+++ b/genomix/genomix-pregelix/src/main/java/edu/uci/ics/genomix/pregelix/io/MessageWritable.java
@@ -113,7 +113,7 @@
public void readFields(DataInput in) throws IOException {
// TODO Auto-generated method stub
lengthOfChain = in.readInt();
- if(lengthOfChain != 0){
+ if(lengthOfChain > 0){
chainVertexId = new byte[(lengthOfChain-1)/4 + 1];
in.readFully(chainVertexId);
}
diff --git a/genomix/genomix-pregelix/src/main/java/edu/uci/ics/genomix/pregelix/sequencefile/generateSmallFile.java b/genomix/genomix-pregelix/src/main/java/edu/uci/ics/genomix/pregelix/sequencefile/generateSmallFile.java
deleted file mode 100644
index 45329d0..0000000
--- a/genomix/genomix-pregelix/src/main/java/edu/uci/ics/genomix/pregelix/sequencefile/generateSmallFile.java
+++ /dev/null
@@ -1,48 +0,0 @@
-package edu.uci.ics.genomix.pregelix.sequencefile;
-
-import java.io.IOException;
-
-import org.apache.hadoop.conf.Configuration;
-import org.apache.hadoop.fs.FileSystem;
-import org.apache.hadoop.fs.Path;
-import org.apache.hadoop.io.BytesWritable;
-import org.apache.hadoop.io.SequenceFile;
-import org.apache.hadoop.io.SequenceFile.CompressionType;
-
-import edu.uci.ics.genomix.type.KmerCountValue;
-
-public class generateSmallFile {
-
- public static void generateNumOfLinesFromBigFile(Path inFile, Path outFile, int numOfLines) throws IOException{
- Configuration conf = new Configuration();
- FileSystem fileSys = FileSystem.get(conf);
-
- SequenceFile.Reader reader = new SequenceFile.Reader(fileSys, inFile, conf);
- SequenceFile.Writer writer = SequenceFile.createWriter(fileSys, conf,
- outFile, BytesWritable.class, KmerCountValue.class,
- CompressionType.NONE);
- BytesWritable outKey = new BytesWritable();
- KmerCountValue outValue = new KmerCountValue();
- int i = 0;
-
- for(i = 0; i < numOfLines; i++){
- //System.out.println(i);
- reader.next(outKey, outValue);
- writer.append(outKey, outValue);
- }
- writer.close();
- reader.close();
- }
- /**
- * @param args
- * @throws IOException
- */
- public static void main(String[] args) throws IOException {
- // TODO Auto-generated method stub
- Path dir = new Path("data/webmap");
- Path inFile = new Path(dir, "part-2");
- Path outFile = new Path(dir, "part-2-out-20000");
- generateNumOfLinesFromBigFile(inFile,outFile,20000);
- }
-
-}
diff --git a/genomix/genomix-pregelix/src/main/java/edu/uci/ics/genomix/pregelix/testcase/GenerateTestInput.java b/genomix/genomix-pregelix/src/main/java/edu/uci/ics/genomix/pregelix/testcase/GenerateTestInput.java
index 8ff5589..6d81b74 100644
--- a/genomix/genomix-pregelix/src/main/java/edu/uci/ics/genomix/pregelix/testcase/GenerateTestInput.java
+++ b/genomix/genomix-pregelix/src/main/java/edu/uci/ics/genomix/pregelix/testcase/GenerateTestInput.java
@@ -61,15 +61,15 @@
writer = new OutputStreamWriter(new FileOutputStream("graph/55/SimplePath_55"));
writer.write(simplePath(55,60,3));
writer.close();
- /*writer = new OutputStreamWriter(new FileOutputStream("TreePath"));
- writer.write(treePath(5, 5, 5, 3));
+ writer = new OutputStreamWriter(new FileOutputStream("graph/55/TreePath"));
+ writer.write(treePath(55, 5, 5, 3));
writer.close();
- writer = new OutputStreamWriter(new FileOutputStream("CyclePath"));
- writer.write(cyclePath(5,10));
+ writer = new OutputStreamWriter(new FileOutputStream("graph/55/CyclePath"));
+ writer.write(cyclePath(55,60));
writer.close();
- writer = new OutputStreamWriter(new FileOutputStream("BridgePath"));
- writer.write(bridgePath(5,2));
- writer.close();*/
+ writer = new OutputStreamWriter(new FileOutputStream("graph/55/BridgePath"));
+ writer.write(bridgePath(55,2));
+ writer.close();
} catch (IOException e) {
e.printStackTrace();
}
diff --git a/genomix/genomix-pregelix/src/main/java/edu/uci/ics/genomix/pregelix/type/State.java b/genomix/genomix-pregelix/src/main/java/edu/uci/ics/genomix/pregelix/type/State.java
index 5447d26..999b431 100644
--- a/genomix/genomix-pregelix/src/main/java/edu/uci/ics/genomix/pregelix/type/State.java
+++ b/genomix/genomix-pregelix/src/main/java/edu/uci/ics/genomix/pregelix/type/State.java
@@ -8,6 +8,7 @@
public static final int TODELETE = 4;
public static final int FINAL_VERTEX = 5;
public static final int FINAL_DELETE = 6;
+ public static final int NON_EXIST = 7;
public final static class STATE_CONTENT{
@@ -35,6 +36,9 @@
case FINAL_DELETE:
r = "FINAL_DELETE";
break;
+ case NON_EXIST:
+ r = "NON_EXIST";
+ break;
}
return r;
}
diff --git a/genomix/genomix-pregelix/src/test/java/edu/uci/ics/genomix/pregelix/JobRun/RunJobTestSuite.java b/genomix/genomix-pregelix/src/test/java/edu/uci/ics/genomix/pregelix/JobRun/RunJobTestSuite.java
index 8d08f2b..ffc1a25 100644
--- a/genomix/genomix-pregelix/src/test/java/edu/uci/ics/genomix/pregelix/JobRun/RunJobTestSuite.java
+++ b/genomix/genomix-pregelix/src/test/java/edu/uci/ics/genomix/pregelix/JobRun/RunJobTestSuite.java
@@ -40,7 +40,7 @@
private static final String PATH_TO_ONLY = "src/test/resources/only.txt";
private static final String FILE_EXTENSION_OF_RESULTS = "result";
- private static final String DATA_PATH = "data/result/BridgePath";// sequenceShortFileMergeTest
+ private static final String DATA_PATH = "data/result/TreePath";// sequenceShortFileMergeTest
private static final String HDFS_PATH = "/webmap/";
private static final String HYRACKS_APP_NAME = "pregelix";
diff --git a/genomix/genomix-pregelix/src/test/resources/hadoop/conf/hdfs-site.xml b/genomix/genomix-pregelix/src/test/resources/hadoop/conf/hdfs-site.xml
index 8d29b1d..a36b6d7 100644
--- a/genomix/genomix-pregelix/src/test/resources/hadoop/conf/hdfs-site.xml
+++ b/genomix/genomix-pregelix/src/test/resources/hadoop/conf/hdfs-site.xml
@@ -12,7 +12,7 @@
<property>
<name>dfs.block.size</name>
- <value>65536</value>
+ <value>655360</value>
</property>
</configuration>