package automenta.netention;
import com.syncleus.dann.graph.Graph;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.LinkedList;
import java.util.List;
public class ScalarMap<X> extends HashMap<X, Double> {
public void highpass(final double threshold) {
List<X> toRemove = new LinkedList();
for (X x : keySet()) {
if (get(x).doubleValue() < threshold) {
toRemove.add(x);
}
}
for (X x : toRemove) {
unset(x);
}
}
public void set(X x, double value) {
put(x, new Double(value));
}
public void unset(X x) {
remove(x);
}
public void multiply(double factor) {
List<X> items = new ArrayList(keySet());
for (X x : items) {
set(x, get(x).doubleValue() * factor);
}
}
public void zero() {
List<X> items = new ArrayList(keySet());
for (X x : items) {
set(x, 0);
}
}
public void spikeRandomly(double spike) {
if (size() == 0) {
return;
}
List<X> items = new ArrayList(keySet());
int random = (int) (Math.random() * ((items.size())));
X x = items.get(random);
set(x, get(x).doubleValue() + spike);
}
public double getAverage() {
double total = 0;
int count = 0;
for (X x : keySet()) {
total += get(x).doubleValue();
count++;
}
return total / count;
}
public void dissipate(Graph<X, ?> g) {
}
}