@Override public Graph search(DataSet dataSet, Parameters parameters) { edu.cmu.tetrad.search.Mbfs search = new edu.cmu.tetrad.search.Mbfs( test.getTest(dataSet, parameters), parameters.getInt("depth")); search.setKnowledge(knowledge); this.targetName = parameters.getString("targetName"); Node target = dataSet.getVariable(targetName); return search.search(target); }
/** * Executes the algorithm, producing (at least) a result workbench. Must be implemented in the * extending class. */ public void execute() { IKnowledge knowledge = (IKnowledge) getParams().get("knowledge", new Knowledge2()); Parameters searchParams = getParams(); Parameters params = searchParams; Graph graph; IndependenceTest independenceTest = getIndependenceTest(); Score score = new ScoredIndTest(independenceTest); if (independenceTest instanceof IndTestDSep) { final DagToPag dagToPag = new DagToPag(((IndTestDSep) independenceTest).getGraph()); dagToPag.setCompleteRuleSetUsed(params.getBoolean("completeRuleSetUsed", false)); graph = dagToPag.convert(); } else { GFci fci = new GFci(independenceTest, score); fci.setKnowledge(knowledge); fci.setCompleteRuleSetUsed(params.getBoolean("completeRuleSetUsed", false)); fci.setMaxPathLength(params.getInt("maxReachablePathLength", -1)); fci.setMaxDegree(params.getInt("maxIndegree")); fci.setCompleteRuleSetUsed(false); fci.setFaithfulnessAssumed(params.getBoolean("faithfulnessAssumed", true)); graph = fci.search(); } if (getSourceGraph() != null) { GraphUtils.arrangeBySourceGraph(graph, getSourceGraph()); } else if (knowledge.isDefaultToKnowledgeLayout()) { SearchGraphUtils.arrangeByKnowledgeTiers(graph, knowledge); } else { GraphUtils.circleLayout(graph, 200, 200, 150); } setResultGraph(graph); }