Github user spupyrev commented on a diff in the pull request:
https://github.com/apache/giraph/pull/82#discussion_r239885758
--- Diff:
giraph-examples/src/main/java/org/apache/giraph/examples/feature_diffusion_utils/datastructures/DiffusionVertexValue.java
---
@@ -0,0 +1,117 @@
+package org.apache.giraph.examples.feature_diffusion_utils.datastructures;
+
+import org.apache.hadoop.io.Writable;
+
+import java.io.DataInput;
+import java.io.DataOutput;
+import java.io.IOException;
+import java.math.BigDecimal;
+import java.math.RoundingMode;
+// DEBUG
+//import java.util.LinkedList;
+import java.util.LinkedList;
+
+public class DiffusionVertexValue implements Writable {
+
+ protected int vertexThreshold;
+ protected int label;
+ protected double currentActivationProbability=0.2;
+ protected double delta=0.05;
+ protected double almostConvincedTreshold=0.7;
+
+ public DiffusionVertexValue() {
+ this.vertexThreshold=1;
+ this.label=1;
+ }
+
+ public DiffusionVertexValue(int label) {
+ this.vertexThreshold=1;
+ this.label=label;
+ }
+
+ public DiffusionVertexValue( int vertexThreshold, int label) {
+ this.vertexThreshold=vertexThreshold;
+ this.label=label;
+ }
+
+ public void readFields(DataInput in) throws IOException {
+ vertexThreshold = in.readInt();
+ label = in.readInt();
+ currentActivationProbability = in.readDouble();
+ }
+
+ public void write(DataOutput out) throws IOException {
+ out.writeInt(vertexThreshold);
+ out.writeInt(label);
+ out.writeDouble(currentActivationProbability);
+ }
+
+ public double getCurrentActivationProbability() {
+ return currentActivationProbability;
+ }
+
+ public void modifyCurrentActivationProbability(int sign) {
+ BigDecimal tmpcurrentActivationProbability = new
BigDecimal(currentActivationProbability).add(new
BigDecimal(sign*delta)).setScale(5, RoundingMode.HALF_UP);
+ if(tmpcurrentActivationProbability.doubleValue() > 1)
+ currentActivationProbability = 1;
+ else
+ currentActivationProbability =
tmpcurrentActivationProbability.doubleValue();
+ if(tmpcurrentActivationProbability.doubleValue() <= 0)
+ currentActivationProbability = 0;
+ }
+
+ public boolean isVertexInvited(int currentLabel) {
+ return this.label >= currentLabel;
+
+ }
+
+ public boolean isVertexDead() {
+ return new BigDecimal(currentActivationProbability).setScale(2,
RoundingMode.HALF_DOWN).floatValue() == 0;
--- End diff --
I believe BigDecimal are not needed in this case
---