use of edu.cmu.tetrad.search.DMSearch in project tetrad by cmu-phil.
the class TestDM method test2.
@Test
public void test2() {
// setting seed for debug.
RandomUtil.getInstance().setSeed(29483818483L);
Graph graph = emptyGraph(8);
graph.addDirectedEdge(new ContinuousVariable("X0"), new ContinuousVariable("X2"));
graph.addDirectedEdge(new ContinuousVariable("X0"), new ContinuousVariable("X3"));
graph.addDirectedEdge(new ContinuousVariable("X1"), new ContinuousVariable("X2"));
graph.addDirectedEdge(new ContinuousVariable("X1"), new ContinuousVariable("X3"));
graph.addDirectedEdge(new ContinuousVariable("X0"), new ContinuousVariable("X6"));
graph.addDirectedEdge(new ContinuousVariable("X0"), new ContinuousVariable("X7"));
graph.addDirectedEdge(new ContinuousVariable("X1"), new ContinuousVariable("X6"));
graph.addDirectedEdge(new ContinuousVariable("X1"), new ContinuousVariable("X7"));
graph.addDirectedEdge(new ContinuousVariable("X4"), new ContinuousVariable("X6"));
graph.addDirectedEdge(new ContinuousVariable("X4"), new ContinuousVariable("X7"));
graph.addDirectedEdge(new ContinuousVariable("X5"), new ContinuousVariable("X6"));
graph.addDirectedEdge(new ContinuousVariable("X5"), new ContinuousVariable("X7"));
SemPm pm = new SemPm(graph);
SemIm im = new SemIm(pm);
DataSet data = im.simulateData(100000, false);
DMSearch search = new DMSearch();
search.setInputs(new int[] { 0, 1, 4, 5 });
search.setOutputs(new int[] { 2, 3, 6, 7 });
search.setData(data);
search.setTrueInputs(search.getInputs());
Graph foundGraph = search.search();
print("Test Case 2");
Graph trueGraph = new EdgeListGraph();
trueGraph.addNode(new ContinuousVariable("X0"));
trueGraph.addNode(new ContinuousVariable("X1"));
trueGraph.addNode(new ContinuousVariable("X2"));
trueGraph.addNode(new ContinuousVariable("X3"));
trueGraph.addNode(new ContinuousVariable("X4"));
trueGraph.addNode(new ContinuousVariable("X5"));
trueGraph.addNode(new ContinuousVariable("X6"));
trueGraph.addNode(new ContinuousVariable("X7"));
trueGraph.addNode(new ContinuousVariable("L0"));
trueGraph.addNode(new ContinuousVariable("L1"));
trueGraph.addDirectedEdge(new ContinuousVariable("X0"), new ContinuousVariable("L0"));
trueGraph.addDirectedEdge(new ContinuousVariable("X1"), new ContinuousVariable("L0"));
trueGraph.addDirectedEdge(new ContinuousVariable("L0"), new ContinuousVariable("X2"));
trueGraph.addDirectedEdge(new ContinuousVariable("L0"), new ContinuousVariable("X3"));
// trueGraph.addDirectedEdge(new ContinuousVariable("L0"), new ContinuousVariable("X1"));
trueGraph.addDirectedEdge(new ContinuousVariable("X0"), new ContinuousVariable("L1"));
trueGraph.addDirectedEdge(new ContinuousVariable("X1"), new ContinuousVariable("L1"));
trueGraph.addDirectedEdge(new ContinuousVariable("X4"), new ContinuousVariable("L1"));
trueGraph.addDirectedEdge(new ContinuousVariable("X5"), new ContinuousVariable("L1"));
trueGraph.addDirectedEdge(new ContinuousVariable("L1"), new ContinuousVariable("X6"));
trueGraph.addDirectedEdge(new ContinuousVariable("L1"), new ContinuousVariable("X7"));
assertTrue(foundGraph.equals(trueGraph));
}
use of edu.cmu.tetrad.search.DMSearch in project tetrad by cmu-phil.
the class TestDM method rtest13.
@Ignore
public void rtest13() {
// setting seed for debug.
RandomUtil.getInstance().setSeed(29483818483L);
Graph graph = emptyGraph(12);
Node X0 = graph.getNode("X0");
Node X1 = graph.getNode("X1");
Node X2 = graph.getNode("X2");
Node X3 = graph.getNode("X3");
Node X4 = graph.getNode("X4");
Node X5 = graph.getNode("X5");
Node X6 = graph.getNode("X6");
Node X7 = graph.getNode("X7");
Node X8 = graph.getNode("X8");
Node X9 = graph.getNode("X9");
Node X10 = graph.getNode("X10");
Node X11 = graph.getNode("X11");
graph.addDirectedEdge(X0, X6);
graph.addDirectedEdge(X1, X6);
graph.addDirectedEdge(X1, X7);
graph.addDirectedEdge(X1, X8);
graph.addDirectedEdge(X2, X8);
graph.addDirectedEdge(X3, X8);
graph.addDirectedEdge(X3, X9);
graph.addDirectedEdge(X3, X10);
graph.addDirectedEdge(X3, X9);
graph.addDirectedEdge(X4, X10);
graph.addDirectedEdge(X4, X11);
graph.addDirectedEdge(X5, X11);
//
// graph.addDirectedEdge(X1, X8);
// graph.addDirectedEdge(X2, X6);
// graph.addDirectedEdge(X2, X7);
// graph.addDirectedEdge(X2, X8);
//
//
// graph.addDirectedEdge(X3, X8);
// graph.addDirectedEdge(X3, X7);
// graph.addDirectedEdge(X4, X8);
// graph.addDirectedEdge(X4, X7);
//
//
// graph.addDirectedEdge(X5, X8);
RandomUtil.getInstance().setSeed(29483818483L);
SemPm pm = new SemPm(graph);
SemIm im = new SemIm(pm);
DataSet data = im.simulateData(100000, false);
DMSearch search = new DMSearch();
search.setInputs(new int[] { 0, 1, 2, 3, 4, 5 });
search.setOutputs(new int[] { 6, 7, 8, 9, 10, 11 });
search.setData(data);
search.setTrueInputs(search.getInputs());
search.search();
print("");
print("" + search.getDmStructure());
print("graph.existsDirectedCycle: " + search.getDmStructure().latentStructToEdgeListGraph(search.getDmStructure()).existsDirectedCycle());
print("Graph structure: " + search);
assertTrue(true);
}
use of edu.cmu.tetrad.search.DMSearch in project tetrad by cmu-phil.
the class TestDM method rtest12.
@Ignore
public void rtest12() {
// setting seed for debug.
RandomUtil.getInstance().setSeed(29483818483L);
Graph graph = emptyGraph(9);
Node X0 = graph.getNode("X0");
Node X1 = graph.getNode("X1");
Node X2 = graph.getNode("X2");
Node X3 = graph.getNode("X3");
Node X4 = graph.getNode("X4");
Node X5 = graph.getNode("X5");
Node X6 = graph.getNode("X6");
Node X7 = graph.getNode("X7");
Node X8 = graph.getNode("X8");
graph.addDirectedEdge(X0, X6);
graph.addDirectedEdge(X0, X7);
graph.addDirectedEdge(X0, X8);
graph.addDirectedEdge(X1, X6);
graph.addDirectedEdge(X1, X7);
graph.addDirectedEdge(X1, X8);
graph.addDirectedEdge(X2, X6);
graph.addDirectedEdge(X2, X7);
graph.addDirectedEdge(X2, X8);
graph.addDirectedEdge(X3, X8);
graph.addDirectedEdge(X3, X7);
graph.addDirectedEdge(X4, X8);
graph.addDirectedEdge(X4, X7);
graph.addDirectedEdge(X5, X8);
RandomUtil.getInstance().setSeed(29483818483L);
SemPm pm = new SemPm(graph);
SemIm im = new SemIm(pm);
DataSet data = im.simulateData(100000, false);
DMSearch search = new DMSearch();
search.setInputs(new int[] { 0, 1, 2, 3, 4, 5 });
search.setOutputs(new int[] { 6, 7, 8 });
search.setData(data);
search.setTrueInputs(search.getInputs());
search.search();
print("");
print("" + search.getDmStructure());
print("graph.existsDirectedCycle: " + search.getDmStructure().latentStructToEdgeListGraph(search.getDmStructure()).existsDirectedCycle());
print("Graph structure: " + search);
assertTrue(true);
}
use of edu.cmu.tetrad.search.DMSearch in project tetrad by cmu-phil.
the class TestDM method test10.
//
@Test
public void test10() {
// setting seed for debug.
RandomUtil.getInstance().setSeed(29483818483L);
Graph graph = emptyGraph(5);
graph.addDirectedEdge(new ContinuousVariable("X0"), new ContinuousVariable("X2"));
graph.addDirectedEdge(new ContinuousVariable("X0"), new ContinuousVariable("X3"));
graph.addDirectedEdge(new ContinuousVariable("X1"), new ContinuousVariable("X3"));
graph.addDirectedEdge(new ContinuousVariable("X1"), new ContinuousVariable("X4"));
SemPm pm = new SemPm(graph);
SemIm im = new SemIm(pm);
DataSet data = im.simulateData(100000, false);
DMSearch search = new DMSearch();
search.setUseFges(false);
search.setInputs(new int[] { 0, 1 });
search.setOutputs(new int[] { 2, 3, 4 });
search.setData(data);
search.setTrueInputs(search.getInputs());
search.search();
print("Test Case 10");
// Trying to quiet the output for unit tests.
if (false) {
System.out.println(search.getDmStructure());
}
assertTrue(true);
}
use of edu.cmu.tetrad.search.DMSearch in project tetrad by cmu-phil.
the class TestDM method test5.
// Three latent collider case
@Test
public void test5() {
// setting seed for debug.
RandomUtil.getInstance().setSeed(29483818483L);
Graph graph = emptyGraph(6);
graph.addDirectedEdge(new ContinuousVariable("X0"), new ContinuousVariable("X3"));
graph.addDirectedEdge(new ContinuousVariable("X0"), new ContinuousVariable("X4"));
graph.addDirectedEdge(new ContinuousVariable("X1"), new ContinuousVariable("X4"));
graph.addDirectedEdge(new ContinuousVariable("X2"), new ContinuousVariable("X4"));
graph.addDirectedEdge(new ContinuousVariable("X2"), new ContinuousVariable("X5"));
SemPm pm = new SemPm(graph);
SemIm im = new SemIm(pm);
DataSet data = im.simulateData(100000, false);
DMSearch search = new DMSearch();
search.setInputs(new int[] { 0, 1, 2 });
search.setOutputs(new int[] { 3, 4, 5 });
search.setData(data);
search.setTrueInputs(search.getInputs());
Graph foundGraph = search.search();
print("Three Latent Collider Case");
Graph trueGraph = new EdgeListGraph();
trueGraph.addNode(new ContinuousVariable("X0"));
trueGraph.addNode(new ContinuousVariable("X1"));
trueGraph.addNode(new ContinuousVariable("X2"));
trueGraph.addNode(new ContinuousVariable("X3"));
trueGraph.addNode(new ContinuousVariable("X4"));
trueGraph.addNode(new ContinuousVariable("X5"));
trueGraph.addNode(new ContinuousVariable("L0"));
trueGraph.addNode(new ContinuousVariable("L1"));
trueGraph.addNode(new ContinuousVariable("L2"));
trueGraph.addDirectedEdge(new ContinuousVariable("X0"), new ContinuousVariable("L0"));
trueGraph.addDirectedEdge(new ContinuousVariable("L0"), new ContinuousVariable("X3"));
trueGraph.addDirectedEdge(new ContinuousVariable("X0"), new ContinuousVariable("L1"));
trueGraph.addDirectedEdge(new ContinuousVariable("X1"), new ContinuousVariable("L1"));
trueGraph.addDirectedEdge(new ContinuousVariable("X2"), new ContinuousVariable("L1"));
trueGraph.addDirectedEdge(new ContinuousVariable("L1"), new ContinuousVariable("X4"));
trueGraph.addDirectedEdge(new ContinuousVariable("X2"), new ContinuousVariable("L2"));
trueGraph.addDirectedEdge(new ContinuousVariable("L2"), new ContinuousVariable("X5"));
assertTrue(foundGraph.equals(trueGraph));
}
Aggregations