Search in sources :

Example 1 with Score

use of edu.cmu.tetrad.search.Score in project tetrad by cmu-phil.

the class FgesMb method search.

@Override
public Graph search(DataModel dataSet, Parameters parameters) {
    if (parameters.getInt("bootstrapSampleSize") < 1) {
        if (algorithm != null) {
        // initialGraph = algorithm.search(dataSet, parameters);
        }
        Score score = this.score.getScore(dataSet, parameters);
        edu.cmu.tetrad.search.FgesMb search = new edu.cmu.tetrad.search.FgesMb(score);
        search.setFaithfulnessAssumed(parameters.getBoolean("faithfulnessAssumed"));
        search.setKnowledge(knowledge);
        if (initialGraph != null) {
            search.setInitialGraph(initialGraph);
        }
        this.targetName = parameters.getString("targetName");
        Node target = this.score.getVariable(targetName);
        return search.search(Collections.singletonList(target));
    } else {
        FgesMb fgesMb = new FgesMb(score, algorithm);
        // fgesMb.setKnowledge(knowledge);
        if (initialGraph != null) {
            fgesMb.setInitialGraph(initialGraph);
        }
        DataSet data = (DataSet) dataSet;
        GeneralBootstrapTest search = new GeneralBootstrapTest(data, fgesMb, parameters.getInt("bootstrapSampleSize"));
        search.setKnowledge(knowledge);
        BootstrapEdgeEnsemble edgeEnsemble = BootstrapEdgeEnsemble.Highest;
        switch(parameters.getInt("bootstrapEnsemble", 1)) {
            case 0:
                edgeEnsemble = BootstrapEdgeEnsemble.Preserved;
                break;
            case 1:
                edgeEnsemble = BootstrapEdgeEnsemble.Highest;
                break;
            case 2:
                edgeEnsemble = BootstrapEdgeEnsemble.Majority;
        }
        search.setEdgeEnsemble(edgeEnsemble);
        search.setParameters(parameters);
        search.setVerbose(parameters.getBoolean("verbose"));
        return search.search();
    }
}
Also used : Score(edu.cmu.tetrad.search.Score) GeneralBootstrapTest(edu.pitt.dbmi.algo.bootstrap.GeneralBootstrapTest) BootstrapEdgeEnsemble(edu.pitt.dbmi.algo.bootstrap.BootstrapEdgeEnsemble) Node(edu.cmu.tetrad.graph.Node)

Example 2 with Score

use of edu.cmu.tetrad.search.Score in project tetrad by cmu-phil.

the class GesMe method search.

@Override
public Graph search(DataModel dataSet, Parameters parameters) {
    if (parameters.getInt("bootstrapSampleSize") < 1) {
        // dataSet = DataUtils.center((DataSet) dataSet);
        CovarianceMatrix covarianceMatrix = new CovarianceMatrix((DataSet) dataSet);
        edu.cmu.tetrad.search.FactorAnalysis analysis = new edu.cmu.tetrad.search.FactorAnalysis(covarianceMatrix);
        analysis.setThreshold(parameters.getDouble("convergenceThreshold"));
        analysis.setNumFactors(parameters.getInt("numFactors"));
        // analysis.setNumFactors(((DataSet) dataSet).getNumColumns());
        TetradMatrix unrotated = analysis.successiveResidual();
        TetradMatrix rotated = analysis.successiveFactorVarimax(unrotated);
        if (parameters.getBoolean("verbose")) {
            NumberFormat nf = NumberFormatUtil.getInstance().getNumberFormat();
            String output = "Unrotated Factor Loading Matrix:\n";
            output += tableString(unrotated, nf, Double.POSITIVE_INFINITY);
            if (unrotated.columns() != 1) {
                output += "\n\nRotated Matrix (using sequential varimax):\n";
                output += tableString(rotated, nf, parameters.getDouble("fa_threshold"));
            }
            System.out.println(output);
            TetradLogger.getInstance().forceLogMessage(output);
        }
        TetradMatrix L;
        if (parameters.getBoolean("useVarimax")) {
            L = rotated;
        } else {
            L = unrotated;
        }
        TetradMatrix residual = analysis.getResidual();
        ICovarianceMatrix covFa = new CovarianceMatrix(covarianceMatrix.getVariables(), L.times(L.transpose()), covarianceMatrix.getSampleSize());
        System.out.println(covFa);
        final double[] vars = covarianceMatrix.getMatrix().diag().toArray();
        List<Integer> indices = new ArrayList<>();
        for (int i = 0; i < vars.length; i++) {
            indices.add(i);
        }
        Collections.sort(indices, new Comparator<Integer>() {

            @Override
            public int compare(Integer o1, Integer o2) {
                return -Double.compare(vars[o1], vars[o2]);
            }
        });
        NumberFormat nf = new DecimalFormat("0.000");
        for (int i = 0; i < indices.size(); i++) {
            System.out.println(nf.format(vars[indices.get(i)]) + " ");
        }
        System.out.println();
        int n = vars.length;
        int cutoff = (int) (n * ((sqrt(8 * n + 1) - 1) / (2 * n)));
        List<Node> nodes = covarianceMatrix.getVariables();
        List<Node> leaves = new ArrayList<>();
        for (int i = 0; i < cutoff; i++) {
            leaves.add(nodes.get(indices.get(i)));
        }
        IKnowledge knowledge2 = new Knowledge2();
        for (Node v : nodes) {
            if (leaves.contains(v)) {
                knowledge2.addToTier(2, v.getName());
            } else {
                knowledge2.addToTier(1, v.getName());
            }
        }
        knowledge2.setTierForbiddenWithin(2, true);
        System.out.println("knowledge2 = " + knowledge2);
        Score score = this.score.getScore(covFa, parameters);
        edu.cmu.tetrad.search.Fges2 search = new edu.cmu.tetrad.search.Fges2(score);
        search.setFaithfulnessAssumed(parameters.getBoolean("faithfulnessAssumed"));
        if (parameters.getBoolean("enforceMinimumLeafNodes")) {
            search.setKnowledge(knowledge2);
        }
        search.setVerbose(parameters.getBoolean("verbose"));
        search.setMaxDegree(parameters.getInt("maxDegree"));
        search.setSymmetricFirstStep(parameters.getBoolean("symmetricFirstStep"));
        Object obj = parameters.get("printStream");
        if (obj instanceof PrintStream) {
            search.setOut((PrintStream) obj);
        }
        if (parameters.getBoolean("verbose")) {
            // NumberFormat nf = NumberFormatUtil.getInstance().getNumberFormat();
            String output = "Unrotated Factor Loading Matrix:\n";
            double threshold = parameters.getDouble("fa_threshold");
            output += tableString(L, nf, Double.POSITIVE_INFINITY);
            if (L.columns() != 1) {
                output += "\n\nL:\n";
                output += tableString(L, nf, threshold);
            }
            System.out.println(output);
            TetradLogger.getInstance().forceLogMessage(output);
        }
        System.out.println("residual = " + residual);
        return search.search();
    } else {
        GesMe algorithm = new GesMe(compareToTrue);
        if (initialGraph != null) {
            algorithm.setInitialGraph(initialGraph);
        }
        DataSet data = (DataSet) dataSet;
        GeneralBootstrapTest search = new GeneralBootstrapTest(data, algorithm, parameters.getInt("bootstrapSampleSize"));
        BootstrapEdgeEnsemble edgeEnsemble = BootstrapEdgeEnsemble.Highest;
        switch(parameters.getInt("bootstrapEnsemble", 1)) {
            case 0:
                edgeEnsemble = BootstrapEdgeEnsemble.Preserved;
                break;
            case 1:
                edgeEnsemble = BootstrapEdgeEnsemble.Highest;
                break;
            case 2:
                edgeEnsemble = BootstrapEdgeEnsemble.Majority;
        }
        search.setEdgeEnsemble(edgeEnsemble);
        search.setParameters(parameters);
        search.setVerbose(parameters.getBoolean("verbose"));
        return search.search();
    }
}
Also used : DecimalFormat(java.text.DecimalFormat) Node(edu.cmu.tetrad.graph.Node) ArrayList(java.util.ArrayList) PrintStream(java.io.PrintStream) GeneralBootstrapTest(edu.pitt.dbmi.algo.bootstrap.GeneralBootstrapTest) BootstrapEdgeEnsemble(edu.pitt.dbmi.algo.bootstrap.BootstrapEdgeEnsemble) Score(edu.cmu.tetrad.search.Score) NumberFormat(java.text.NumberFormat)

Example 3 with Score

use of edu.cmu.tetrad.search.Score in project tetrad by cmu-phil.

the class TsImages method search.

@Override
public Graph search(DataModel dataModel, Parameters parameters) {
    if (parameters.getInt("bootstrapSampleSize") < 1) {
        DataSet dataSet = (DataSet) dataModel;
        TsGFci search;
        Score score1 = score.getScore(dataSet, parameters);
        IndependenceTest test = new IndTestScore(score1);
        search = new TsGFci(test, score1);
        search.setKnowledge(dataSet.getKnowledge());
        return search.search();
    } else {
        TsImages algorithm = new TsImages(score);
        DataSet data = (DataSet) dataModel;
        GeneralBootstrapTest search = new GeneralBootstrapTest(data, algorithm, parameters.getInt("bootstrapSampleSize"));
        search.setKnowledge(knowledge);
        BootstrapEdgeEnsemble edgeEnsemble = BootstrapEdgeEnsemble.Highest;
        switch(parameters.getInt("bootstrapEnsemble", 1)) {
            case 0:
                edgeEnsemble = BootstrapEdgeEnsemble.Preserved;
                break;
            case 1:
                edgeEnsemble = BootstrapEdgeEnsemble.Highest;
                break;
            case 2:
                edgeEnsemble = BootstrapEdgeEnsemble.Majority;
        }
        search.setEdgeEnsemble(edgeEnsemble);
        search.setParameters(parameters);
        search.setVerbose(parameters.getBoolean("verbose"));
        return search.search();
    }
}
Also used : IndTestScore(edu.cmu.tetrad.search.IndTestScore) SemBicScore(edu.cmu.tetrad.algcomparison.score.SemBicScore) BdeuScore(edu.cmu.tetrad.algcomparison.score.BdeuScore) Score(edu.cmu.tetrad.search.Score) IndependenceTest(edu.cmu.tetrad.search.IndependenceTest) GeneralBootstrapTest(edu.pitt.dbmi.algo.bootstrap.GeneralBootstrapTest) BootstrapEdgeEnsemble(edu.pitt.dbmi.algo.bootstrap.BootstrapEdgeEnsemble) DataSet(edu.cmu.tetrad.data.DataSet) IndTestScore(edu.cmu.tetrad.search.IndTestScore) TsGFci(edu.cmu.tetrad.search.TsGFci)

Aggregations

Score (edu.cmu.tetrad.search.Score)3 BootstrapEdgeEnsemble (edu.pitt.dbmi.algo.bootstrap.BootstrapEdgeEnsemble)3 GeneralBootstrapTest (edu.pitt.dbmi.algo.bootstrap.GeneralBootstrapTest)3 Node (edu.cmu.tetrad.graph.Node)2 BdeuScore (edu.cmu.tetrad.algcomparison.score.BdeuScore)1 SemBicScore (edu.cmu.tetrad.algcomparison.score.SemBicScore)1 DataSet (edu.cmu.tetrad.data.DataSet)1 IndTestScore (edu.cmu.tetrad.search.IndTestScore)1 IndependenceTest (edu.cmu.tetrad.search.IndependenceTest)1 TsGFci (edu.cmu.tetrad.search.TsGFci)1 PrintStream (java.io.PrintStream)1 DecimalFormat (java.text.DecimalFormat)1 NumberFormat (java.text.NumberFormat)1 ArrayList (java.util.ArrayList)1