Beispiel #1
0
  private void addCovMatrixTestMenuItems(JMenu test) {
    IndTestType testType = getTestType();
    if (testType != IndTestType.FISHER_Z
    //                && testType != IndTestType.CORRELATION_T
    ) {
      setTestType(IndTestType.FISHER_Z);
    }

    ButtonGroup group = new ButtonGroup();
    JCheckBoxMenuItem fishersZ = new JCheckBoxMenuItem("Fisher's Z");
    group.add(fishersZ);
    test.add(fishersZ);

    //        JCheckBoxMenuItem tTest = new JCheckBoxMenuItem("Cramer's T");
    //        group.add(tTest);
    //        test.add(tTest);

    testType = getTestType();

    if (testType == IndTestType.FISHER_Z) {
      fishersZ.setSelected(true);
    }
    //        else if (testType == IndTestType.CORRELATION_T) {
    //            tTest.setSelected(true);
    //        }

    fishersZ.addActionListener(
        new ActionListener() {
          public void actionPerformed(ActionEvent e) {
            setTestType(IndTestType.FISHER_Z);
            JOptionPane.showMessageDialog(JOptionUtils.centeringComp(), "Using Fisher's Z.");
          }
        });

    //        tTest.addActionListener(new ActionListener() {
    //            public void actionPerformed(ActionEvent e) {
    //                setTestType(IndTestType.CORRELATION_T);
    //                JOptionPane.showMessageDialog(JOptionUtils.centeringComp(),
    //                        "Using Cramer's T.");
    //            }
    //        });
  }
Beispiel #2
0
  protected void addSpecialMenus(JMenuBar menuBar) {
    if (!(getAlgorithmRunner() instanceof IGesRunner)) {
      JMenu test = new JMenu("Independence");
      menuBar.add(test);

      IndTestMenuItems.addIndependenceTestChoices(test, this);

      //            test.addSeparator();
      //
      //            AlgorithmRunner algorithmRunner = getAlgorithmRunner();

      //            if (algorithmRunner instanceof IndTestProducer) {
      //                IndTestProducer p = (IndTestProducer) algorithmRunner;
      //                IndependenceFactsAction action =
      //                        new IndependenceFactsAction(this, p, "Independence Facts...");
      //                test.add(action);
      //            }
    }

    JMenu graph = new JMenu("Graph");
    JMenuItem showDags = new JMenuItem("Show DAGs in Pattern");
    JMenuItem meekOrient = new JMenuItem("Meek Orientation");
    JMenuItem dagInPattern = new JMenuItem("Choose DAG in Pattern");
    JMenuItem gesOrient = new JMenuItem("Global Score-based Reorientation");
    JMenuItem nextGraph = new JMenuItem("Next Graph");
    JMenuItem previousGraph = new JMenuItem("Previous Graph");

    graph.add(new GraphPropertiesAction(getWorkbench()));
    graph.add(new PathsAction(getWorkbench()));
    //        graph.add(new DirectedPathsAction(getWorkbench()));
    //        graph.add(new TreksAction(getWorkbench()));
    //        graph.add(new AllPathsAction(getWorkbench()));
    //        graph.add(new NeighborhoodsAction(getWorkbench()));
    graph.add(new TriplesAction(getWorkbench(), getAlgorithmRunner()));
    graph.addSeparator();

    graph.add(meekOrient);
    graph.add(dagInPattern);
    graph.add(gesOrient);
    graph.addSeparator();

    graph.add(previousGraph);
    graph.add(nextGraph);
    graph.addSeparator();

    graph.add(showDags);

    graph.addSeparator();
    graph.add(new JMenuItem(new SelectBidirectedAction(getWorkbench())));
    graph.add(new JMenuItem(new SelectUndirectedAction(getWorkbench())));

    menuBar.add(graph);

    showDags.addActionListener(
        new ActionListener() {
          public void actionPerformed(ActionEvent e) {
            Window owner = (Window) getTopLevelAncestor();

            new WatchedProcess(owner) {
              public void watch() {

                // Needs to be a pattern search; this isn't checked
                // before running the algorithm because of allowable
                // "slop"--e.g. bidirected edges.
                AlgorithmRunner runner = getAlgorithmRunner();
                Graph graph = runner.getResultGraph();

                if (graph == null) {
                  JOptionPane.showMessageDialog(JOptionUtils.centeringComp(), "No result gaph.");
                  return;
                }

                if (runner instanceof GesRunner) {
                  GraphScorer scorer = ((GesRunner) runner).getGraphScorer();
                  Graph _graph = ((GesRunner) runner).getTopGraphs().get(getIndex()).getGraph();

                  ScoredGraphsDisplay display = new ScoredGraphsDisplay(_graph, scorer);
                  GraphWorkbench workbench = getWorkbench();

                  EditorWindow editorWindow =
                      new EditorWindow(display, "Independence Facts", "Close", false, workbench);
                  DesktopController.getInstance()
                      .addEditorWindow(editorWindow, JLayeredPane.PALETTE_LAYER);
                  editorWindow.setVisible(true);
                } else {
                  PatternDisplay display = new PatternDisplay(graph);
                  GraphWorkbench workbench = getWorkbench();

                  EditorWindow editorWindow =
                      new EditorWindow(display, "Independence Facts", "Close", false, workbench);
                  DesktopController.getInstance()
                      .addEditorWindow(editorWindow, JLayeredPane.PALETTE_LAYER);
                  editorWindow.setVisible(true);
                }
              }
            };
          }
        });

    meekOrient.addActionListener(
        new ActionListener() {
          public void actionPerformed(ActionEvent e) {
            ImpliedOrientation rules = getAlgorithmRunner().getMeekRules();
            rules.setKnowledge(getAlgorithmRunner().getParams().getKnowledge());
            rules.orientImplied(getGraph());
            getGraphHistory().add(getGraph());
            getWorkbench().setGraph(getGraph());
            firePropertyChange("modelChanged", null, null);
          }
        });

    dagInPattern.addActionListener(
        new ActionListener() {
          public void actionPerformed(ActionEvent e) {
            Graph graph = new EdgeListGraph(getGraph());

            // Removing bidirected edges from the pattern before selecting a DAG.
            //                4
            for (Edge edge : graph.getEdges()) {
              if (Edges.isBidirectedEdge(edge)) {
                graph.removeEdge(edge);
              }
            }

            PatternToDag search = new PatternToDag(new Pattern(graph));
            Graph dag = search.patternToDagMeekRules();

            getGraphHistory().add(dag);
            getWorkbench().setGraph(dag);

            ((AbstractAlgorithmRunner) getAlgorithmRunner()).setResultGraph(dag);
            firePropertyChange("modelChanged", null, null);
          }
        });

    gesOrient.addActionListener(
        new ActionListener() {
          public void actionPerformed(ActionEvent e) {
            DataModel dataModel = getAlgorithmRunner().getDataModel();

            final Graph graph = SearchGraphUtils.reorient(getGraph(), dataModel, getKnowledge());

            getGraphHistory().add(graph);
            getWorkbench().setGraph(graph);
            firePropertyChange("modelChanged", null, null);
          }
        });

    nextGraph.addActionListener(
        new ActionListener() {
          public void actionPerformed(ActionEvent e) {
            Graph next = getGraphHistory().next();
            getWorkbench().setGraph(next);
            ((AbstractAlgorithmRunner) getAlgorithmRunner()).setResultGraph(next);
            firePropertyChange("modelChanged", null, null);
          }
        });

    previousGraph.addActionListener(
        new ActionListener() {
          public void actionPerformed(ActionEvent e) {
            Graph previous = getGraphHistory().previous();
            getWorkbench().setGraph(previous);
            ((AbstractAlgorithmRunner) getAlgorithmRunner()).setResultGraph(previous);
            firePropertyChange("modelChanged", null, null);
          }
        });

    menuBar.add(new LayoutMenu(this));
  }