Search in sources :

Example 46 with Taxa

use of dr.evolution.util.Taxa in project beast-mcmc by beast-dev.

the class PartitionData method createTreeModel.

public TreeModel createTreeModel() {
    TreeModel treeModel = null;
    if (this.demographicModelIndex == 0 && this.record.isTreeSet()) {
        treeModel = new TreeModel(this.record.getTree());
    } else if ((this.demographicModelIndex > 0 && this.demographicModelIndex <= lastImplementedIndex) && this.record.isTreeSet()) {
        Taxa taxa = new Taxa(this.record.getTree().asList());
        CoalescentSimulator topologySimulator = new CoalescentSimulator();
        treeModel = new TreeModel(topologySimulator.simulateTree(taxa, createDemographicFunction()));
    } else if ((this.demographicModelIndex > 0 && this.demographicModelIndex <= lastImplementedIndex) && this.record.isTaxaSet()) {
        Taxa taxa = this.record.getTaxa();
        CoalescentSimulator topologySimulator = new CoalescentSimulator();
        treeModel = new TreeModel(topologySimulator.simulateTree(taxa, createDemographicFunction()));
    //			} else if (this.demographicModelIndex == 0 && this.record.taxaSet) { 
    //			throw new RuntimeException("Data and demographic model incompatible for partition ");	
    } else {
        throw new RuntimeException("Data and demographic model incompatible.");
    }
    return treeModel;
}
Also used : TreeModel(dr.evomodel.tree.TreeModel) Taxa(dr.evolution.util.Taxa) CoalescentSimulator(dr.evolution.coalescent.CoalescentSimulator)

Example 47 with Taxa

use of dr.evolution.util.Taxa in project beast-mcmc by beast-dev.

the class TaxaEditor method doOk.

// END: ListenOk
private void doOk() {
    frame.setBusy();
    SwingWorker<Void, Void> worker = new SwingWorker<Void, Void>() {

        // Executed in background thread
        public Void doInBackground() {
            try {
                // delete taxa connected to this row
                String value = dataList.recordsList.get(row).getName();
                Utils.removeTaxaWithAttributeValue(dataList, Utils.TREE_FILENAME, value);
                String name = String.valueOf("TaxaSet").concat(String.valueOf(row + 1));
                Taxa taxa = taxaEditorTableModel.getTaxaSet();
                TreesTableRecord record = new TreesTableRecord(name, taxa);
                dataList.recordsList.set(row, record);
                dataList.allTaxa.addTaxa(taxa);
            // treesTableModel.setRow(row, record);
            } catch (Exception e) {
                Utils.handleException(e);
            }
            return null;
        }

        // END: doInBackground()
        // Executed in event dispatch thread
        public void done() {
            frame.setIdle();
            frame.fireTaxaChanged();
            window.setVisible(false);
        }
    };
    worker.execute();
}
Also used : Taxa(dr.evolution.util.Taxa) SwingWorker(javax.swing.SwingWorker)

Example 48 with Taxa

use of dr.evolution.util.Taxa in project beast-mcmc by beast-dev.

the class TaxaEditor method loadTaxaFile.

// END: ListenLoadTaxaFile
private void loadTaxaFile(File file) {
    try {
        Taxa taxa = new Taxa();
        String[] lines = Utils.loadStrings(file.getAbsolutePath());
        Taxon taxon;
        for (int i = 0; i < lines.length; i++) {
            String[] line = lines[i].split("\\s+");
            taxon = new Taxon(line[TaxaEditorTableModel.NAME_INDEX]);
            taxon.setAttribute(Utils.ABSOLUTE_HEIGHT, Double.valueOf(line[TaxaEditorTableModel.HEIGHT_INDEX]));
            taxa.addTaxon(taxon);
        }
        // END: i loop
        updateTable(taxa);
    } catch (Exception e) {
        Utils.handleException(e);
    }
// END: try-catch block
}
Also used : Taxa(dr.evolution.util.Taxa) Taxon(dr.evolution.util.Taxon)

Example 49 with Taxa

use of dr.evolution.util.Taxa in project beast-mcmc by beast-dev.

the class VariableCoalescentSimulator method main.

public static void main(String[] arg) throws IOException {
    long startTime = System.currentTimeMillis();
    Options options = new Options(arg, 0, 7);
    options.getSet().addOption("g", Options.Separator.EQUALS, Options.Multiplicity.ZERO_OR_ONE);
    options.getSet().addOption("n", Options.Separator.EQUALS, Options.Multiplicity.ZERO_OR_ONE);
    options.getSet().addOption("p", Options.Separator.EQUALS, Options.Multiplicity.ZERO_OR_ONE);
    options.getSet().addOption("se", Options.Separator.EQUALS, Options.Multiplicity.ZERO_OR_ONE);
    options.getSet().addOption("ss", Options.Separator.EQUALS, Options.Multiplicity.ZERO_OR_ONE);
    options.getSet().addOption("reps", Options.Separator.EQUALS, Options.Multiplicity.ZERO_OR_ONE);
    options.getSet().addOption("f", Options.Multiplicity.ZERO_OR_ONE);
    if (!options.check()) {
        System.out.println(options.getCheckErrors());
        System.out.println();
        printUsage();
        System.exit(1);
    }
    double generationTime = 1.0;
    double popSizeScale = 1.0;
    int n = 50;
    double ss = -1;
    double se = -1;
    int reps = 1;
    boolean timeForward = options.getSet().isSet("f");
    if (options.getSet().isSet("g")) {
        String g = options.getSet().getOption("g").getResultValue(0);
        generationTime = Double.parseDouble(g);
        System.out.println("generation time = " + g);
    }
    if (options.getSet().isSet("n")) {
        String sampleSize = options.getSet().getOption("n").getResultValue(0);
        n = Integer.parseInt(sampleSize);
        System.out.println("sample size = " + n);
    }
    if (options.getSet().isSet("p")) {
        String p = options.getSet().getOption("p").getResultValue(0);
        popSizeScale = Double.parseDouble(p);
        System.out.println("population size scale factor = " + p);
    }
    if (options.getSet().isSet("ss")) {
        String sampleStart = options.getSet().getOption("ss").getResultValue(0);
        ss = Double.parseDouble(sampleStart);
        System.out.println("sample start time = " + ss);
    }
    if (options.getSet().isSet("se")) {
        String sampleEnd = options.getSet().getOption("se").getResultValue(0);
        se = Double.parseDouble(sampleEnd);
        System.out.println("sample end time = " + se);
    }
    if (options.getSet().isSet("reps")) {
        String replicates = options.getSet().getOption("reps").getResultValue(0);
        reps = Integer.parseInt(replicates);
        System.out.println("replicates = " + reps);
    }
    String filename = options.getSet().getData().get(0);
    String outfile = options.getSet().getData().get(1);
    // READ DEMOGRAPHIC FUNCTION
    BufferedReader reader = new BufferedReader(new FileReader(filename));
    List<Double> times = new ArrayList<Double>();
    String line = reader.readLine();
    String[] tokens = line.trim().split("[\t ]+");
    if (tokens.length < 2)
        throw new RuntimeException();
    ArrayList<ArrayList> popSizes = new ArrayList<ArrayList>();
    while (line != null) {
        double time = Double.parseDouble(tokens[0]) / generationTime;
        times.add(time);
        for (int i = 1; i < tokens.length; i++) {
            popSizes.add(new ArrayList<Double>());
            popSizes.get(i - 1).add(Double.parseDouble(tokens[i]));
        }
        line = reader.readLine();
        if (line != null) {
            tokens = line.trim().split("[\t ]+");
            if (tokens.length != popSizes.size() + 1)
                throw new RuntimeException();
        }
    }
    reader.close();
    // GENERATE SAMPLE
    double lastTime = times.get(times.size() - 1);
    if (ss == -1) {
        ss = timeForward ? lastTime : times.get(0);
    }
    if (se == -1) {
        se = timeForward ? lastTime : times.get(0);
    }
    double dt = (se - ss) / ((double) n - 1.0);
    double time = ss;
    Taxa taxa = new Taxa();
    for (int i = 0; i < n; i++) {
        double sampleTime;
        if (timeForward) {
            sampleTime = (lastTime - time) / generationTime;
        } else
            sampleTime = time / generationTime;
        Taxon taxon = new Taxon(i + "");
        taxon.setAttribute(dr.evolution.util.Date.DATE, new Date(sampleTime, Units.Type.GENERATIONS, true));
        taxa.addTaxon(taxon);
        time += dt;
    }
    double minTheta = Double.MAX_VALUE;
    double maxTheta = 0.0;
    PrintWriter out = new PrintWriter(new FileWriter(outfile));
    int popHistory = 0;
    PiecewiseLinearPopulation[] demography = new PiecewiseLinearPopulation[popSizes.size()];
    for (List<Double> popSize : popSizes) {
        double[] thetas = new double[popSize.size()];
        double[] intervals = new double[times.size() - 1];
        for (int i = intervals.length; i >= 0; i--) {
            int j = timeForward ? intervals.length - i : i - 1;
            int k = timeForward ? i : intervals.length - i + 1;
            if (i != 0)
                intervals[j] = times.get(k) - times.get(k - 1);
            double theta = popSize.get(k) * popSizeScale;
            thetas[j] = theta;
            if (theta < minTheta) {
                minTheta = theta;
            }
            if (theta > maxTheta) {
                maxTheta = theta;
            }
        //System.out.println(t + "\t" + theta);
        }
        System.out.println("N" + popHistory + "(t) range = [" + minTheta + ", " + maxTheta + "]");
        demography[popHistory] = new PiecewiseLinearPopulation(intervals, thetas, Units.Type.GENERATIONS);
        popHistory += 1;
    }
    CoalescentSimulator simulator = new CoalescentSimulator();
    for (int i = 0; i < reps; i++) {
        out.println("#rep " + i);
        for (int j = 0; j < demography.length; j++) {
            Tree tree = simulator.simulateTree(taxa, demography[j]);
            out.println(TreeUtils.newick(tree));
        //System.err.println(Tree.Utils.newick(tree));
        }
    }
    out.flush();
    out.close();
    long stopTime = System.currentTimeMillis();
    System.out.println("Took " + (stopTime - startTime) / 1000.0 + " seconds");
}
Also used : Options(ml.options.Options) ArrayList(java.util.ArrayList) PiecewiseLinearPopulation(dr.evolution.coalescent.PiecewiseLinearPopulation) Taxa(dr.evolution.util.Taxa) Tree(dr.evolution.tree.Tree) Taxon(dr.evolution.util.Taxon) Date(dr.evolution.util.Date) CoalescentSimulator(dr.evolution.coalescent.CoalescentSimulator)

Example 50 with Taxa

use of dr.evolution.util.Taxa in project beast-mcmc by beast-dev.

the class VariableCoalescentSimulator method readSampleFile.

private static Taxa readSampleFile(String fileName, double generationTime) throws IOException {
    BufferedReader reader = new BufferedReader(new FileReader(fileName));
    String line = reader.readLine();
    Taxa taxa = new Taxa();
    int id = 0;
    while (line != null) {
        if (!line.startsWith("#")) {
            String[] tokens = line.split("[\t ]+");
            // sample times are in the same units as simulation
            double sampleTime = Double.parseDouble(tokens[0]) / generationTime;
            int count = Integer.parseInt(tokens[1]);
            for (int i = 0; i < count; i++) {
                Taxon taxon = new Taxon(id + "");
                taxon.setAttribute(dr.evolution.util.Date.DATE, new Date(sampleTime, Units.Type.GENERATIONS, true));
                taxa.addTaxon(taxon);
                id += 1;
            }
        }
        line = reader.readLine();
    }
    return taxa;
}
Also used : Taxa(dr.evolution.util.Taxa) Taxon(dr.evolution.util.Taxon) Date(dr.evolution.util.Date)

Aggregations

Taxa (dr.evolution.util.Taxa)65 Taxon (dr.evolution.util.Taxon)31 ArrayList (java.util.ArrayList)22 Tree (dr.evolution.tree.Tree)17 TaxonList (dr.evolution.util.TaxonList)14 Attribute (dr.util.Attribute)11 Patterns (dr.evolution.alignment.Patterns)9 Microsatellite (dr.evolution.datatype.Microsatellite)9 TreeModel (dr.evomodel.tree.TreeModel)9 NewickImporter (dr.evolution.io.NewickImporter)6 SimpleTree (dr.evolution.tree.SimpleTree)5 Parameter (dr.inference.model.Parameter)5 GammaSiteModel (dr.oldevomodel.sitemodel.GammaSiteModel)5 IOException (java.io.IOException)5 SimpleAlignment (dr.evolution.alignment.SimpleAlignment)4 ImportException (dr.evolution.io.Importer.ImportException)4 Date (dr.evolution.util.Date)4 BranchRateModel (dr.evomodel.branchratemodel.BranchRateModel)4 CoalescentSimulator (dr.evomodel.coalescent.CoalescentSimulator)4 CoalescentSimulator (dr.evolution.coalescent.CoalescentSimulator)3