Search in sources :

Example 1 with DMSearch

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));
}
Also used : ContinuousVariable(edu.cmu.tetrad.data.ContinuousVariable) EdgeListGraph(edu.cmu.tetrad.graph.EdgeListGraph) Graph(edu.cmu.tetrad.graph.Graph) DataSet(edu.cmu.tetrad.data.DataSet) EdgeListGraph(edu.cmu.tetrad.graph.EdgeListGraph) SemPm(edu.cmu.tetrad.sem.SemPm) SemIm(edu.cmu.tetrad.sem.SemIm) DMSearch(edu.cmu.tetrad.search.DMSearch) Test(org.junit.Test)

Example 2 with DMSearch

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);
}
Also used : EdgeListGraph(edu.cmu.tetrad.graph.EdgeListGraph) Graph(edu.cmu.tetrad.graph.Graph) DataSet(edu.cmu.tetrad.data.DataSet) Node(edu.cmu.tetrad.graph.Node) SemPm(edu.cmu.tetrad.sem.SemPm) SemIm(edu.cmu.tetrad.sem.SemIm) DMSearch(edu.cmu.tetrad.search.DMSearch) Ignore(org.junit.Ignore)

Example 3 with DMSearch

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);
}
Also used : EdgeListGraph(edu.cmu.tetrad.graph.EdgeListGraph) Graph(edu.cmu.tetrad.graph.Graph) DataSet(edu.cmu.tetrad.data.DataSet) Node(edu.cmu.tetrad.graph.Node) SemPm(edu.cmu.tetrad.sem.SemPm) SemIm(edu.cmu.tetrad.sem.SemIm) DMSearch(edu.cmu.tetrad.search.DMSearch) Ignore(org.junit.Ignore)

Example 4 with DMSearch

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);
}
Also used : ContinuousVariable(edu.cmu.tetrad.data.ContinuousVariable) EdgeListGraph(edu.cmu.tetrad.graph.EdgeListGraph) Graph(edu.cmu.tetrad.graph.Graph) DataSet(edu.cmu.tetrad.data.DataSet) SemPm(edu.cmu.tetrad.sem.SemPm) SemIm(edu.cmu.tetrad.sem.SemIm) DMSearch(edu.cmu.tetrad.search.DMSearch) Test(org.junit.Test)

Example 5 with DMSearch

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));
}
Also used : ContinuousVariable(edu.cmu.tetrad.data.ContinuousVariable) EdgeListGraph(edu.cmu.tetrad.graph.EdgeListGraph) Graph(edu.cmu.tetrad.graph.Graph) DataSet(edu.cmu.tetrad.data.DataSet) EdgeListGraph(edu.cmu.tetrad.graph.EdgeListGraph) SemPm(edu.cmu.tetrad.sem.SemPm) SemIm(edu.cmu.tetrad.sem.SemIm) DMSearch(edu.cmu.tetrad.search.DMSearch) Test(org.junit.Test)

Aggregations

DMSearch (edu.cmu.tetrad.search.DMSearch)14 DataSet (edu.cmu.tetrad.data.DataSet)10 EdgeListGraph (edu.cmu.tetrad.graph.EdgeListGraph)9 Graph (edu.cmu.tetrad.graph.Graph)9 SemIm (edu.cmu.tetrad.sem.SemIm)9 SemPm (edu.cmu.tetrad.sem.SemPm)9 ContinuousVariable (edu.cmu.tetrad.data.ContinuousVariable)7 Test (org.junit.Test)7 Ignore (org.junit.Ignore)6 File (java.io.File)5 FileOutputStream (java.io.FileOutputStream)4 PrintStream (java.io.PrintStream)4 Node (edu.cmu.tetrad.graph.Node)2 ContinuousTabularDataFileReader (edu.pitt.dbmi.data.reader.tabular.ContinuousTabularDataFileReader)1 TabularDataReader (edu.pitt.dbmi.data.reader.tabular.TabularDataReader)1 IOException (java.io.IOException)1