Пример #1
0
  protected void writeTimeTreeFile(PrintStream ps) throws IOException {

    FlexibleTree tree = new FlexibleTree(treesPanel.getTreeAsViewed());

    Regression r =
        treesPanel.getTemporalRooting().getRootToTipRegression(treesPanel.getTreeAsViewed());

    for (int i = 0; i < tree.getInternalNodeCount(); i++) {
      NodeRef node = tree.getInternalNode(i);
      double height = tree.getNodeHeight(node);
      tree.setNodeHeight(node, height / r.getGradient());
    }

    TreeUtils.setHeightsFromDates(tree);

    NexusExporter nexusExporter = new NexusExporter(new PrintStream(ps));
    nexusExporter.exportTree(tree);
  }
Пример #2
0
  protected boolean readFromFile(File file) throws IOException {
    Reader reader = new FileReader(file);

    BufferedReader bufferedReader = new BufferedReader(reader);
    String line = bufferedReader.readLine();
    while (line != null && line.length() == 0) {
      line = bufferedReader.readLine();
    }

    boolean isNexus = (line != null && line.toUpperCase().contains("#NEXUS"));

    reader = new FileReader(file);

    Tree tree = null;
    try {
      if (isNexus) {
        NexusImporter importer = new NexusImporter(reader);
        tree = importer.importTree(taxa);
      } else {
        NewickImporter importer = new NewickImporter(reader);
        tree = importer.importTree(taxa);
      }

    } catch (Importer.ImportException ime) {
      JOptionPane.showMessageDialog(
          this,
          "Error parsing imported file: " + ime,
          "Error reading file",
          JOptionPane.ERROR_MESSAGE);
      ime.printStackTrace();
      return false;
    } catch (IOException ioex) {
      JOptionPane.showMessageDialog(
          this, "File I/O Error: " + ioex, "File I/O Error", JOptionPane.ERROR_MESSAGE);
      ioex.printStackTrace();
      return false;
    } catch (Exception ex) {
      JOptionPane.showMessageDialog(
          this, "Fatal exception: " + ex, "Error reading file", JOptionPane.ERROR_MESSAGE);
      ex.printStackTrace();
      return false;
    }

    if (tree == null) {
      JOptionPane.showMessageDialog(
          this,
          "The file is not in a suitable format or contains no trees.",
          "Error reading file",
          JOptionPane.ERROR_MESSAGE);
      return false;
    }

    FlexibleTree binaryTree = new FlexibleTree(tree, true);
    binaryTree.resolveTree();
    trees.add(binaryTree);
    if (taxa == null) {
      taxa = binaryTree;
    }

    getExportTreeAction().setEnabled(true);
    getExportDataAction().setEnabled(true);

    return true;
  }