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