package esl.cuenet.generative;
import com.google.common.collect.Sets;
import esl.cuenet.algorithms.firstk.impl.LocalFilePreprocessor;
import esl.cuenet.algorithms.firstk.personal.Main;
import esl.cuenet.algorithms.firstk.personal.accessor.Candidates;
import esl.cuenet.algorithms.firstk.personal.accessor.PConstants;
import esl.cuenet.generative.structs.ContextNetwork;
import esl.cuenet.generative.structs.NetworkBuildingHelper;
import esl.cuenet.generative.structs.Propagate;
import esl.cuenet.generative.structs.SpaceTimeValueGenerators;
import esl.system.SysLoggerUtils;
import org.apache.commons.io.FileUtils;
import org.apache.log4j.Logger;
import org.junit.Test;
import java.io.File;
import java.io.IOException;
import java.util.*;
public class SimplePropagationTest {
static{
SysLoggerUtils.initLogger();
}
Logger logger = Logger.getLogger(getClass());
public ContextNetwork load(String eventsfile, String annFile) {
ContextNetwork network = null;
try {
network = NetworkBuildingHelper.coloredLoad(eventsfile,
FileUtils.readLines(new File(annFile)));
} catch (IOException e) {
e.printStackTrace();
return null;
}
network.printTree(true);
int nTimestamp = 1339781224;
double glat = 33.642, glon = -117.833;
int event_type = 4; //(4, 5, 6)
int instance_count = 9; //(9, 5, 6)
String locationKey = UUID.randomUUID().toString();
//Set<String> objects = Sets.newHashSet("189", "190", "191", "192", "193", "194");
// Set<String> objects = Sets.newHashSet("64", "65", "66", "67");
Set<String> objects = Sets.newHashSet("10", "11", "12", "13");
ContextNetwork tempNet = NetworkBuildingHelper.createNetwork(nTimestamp, locationKey,
event_type, instance_count, objects);
NetworkBuildingHelper.addToNetwork(network, tempNet);
try {
FileUtils.writeStringToFile(new File("/data/ranker/colored/tempLocations.txt"),
locationKey + "," + glat + "," + glon, true);
} catch (IOException e) {
e.printStackTrace();
}
return network;
}
@Test
public void coloredTest() throws IOException {
String distanceFile = "/data/ranker/real/ontology_cuenet.distances.txt";
ContextNetwork network = load("/data/ranker/colored/photos.txt", "/data/ranker/colored/annotations.txt");
logger.info(network.count());
SpaceTimeValueGenerators stGenerator = new SpaceTimeValueGenerators("/data/ranker/colored/tempLocations.txt");
Propagate propagator = new Propagate(network, distanceFile, stGenerator);
propagator.show();
propagator.prepare(Sets.newHashSet("64"));
double l1delta;
double[] deltas = new double[10];
for (int i=0; i<10; i++) {
l1delta = propagator.propagateOnceTable();
logger.info("delta = " + l1delta);
//propagator.printScores(4, 9);
deltas[i] = l1delta;
}
//propagator.printScores(6, 6);
propagator.printScores(4, 9);
// for (int i=0; i<10; i++) {
// l1delta = propagator.propagateOnce();
// logger.info(l1delta);
// deltas[i] = l1delta;
// }
//
// logger.info(Arrays.toString(deltas));
//
// Candidates candidateSet = Candidates.getInstance();
// List<Map.Entry<String,Double>> objects = propagator.orderObjects();
//
// int _x = 25;
// for (Map.Entry<String, Double> o: objects) {
// logger.info(o.getKey() + " " + candidateSet.get(new Candidates.CandidateReference(Integer.parseInt(o.getKey()))));
// if (_x-- == 0) break;
// }
}
}