示例#1
0
  /**
   * Simulates a coalescent tree from a set of subtrees.
   *
   * @param subtrees an array of tree to be used as subtrees
   * @param model the demographic model to use
   * @param rootHeight an optional root height with which to scale the whole tree
   * @param preserveSubtrees true of subtrees should be preserved
   * @return a simulated coalescent tree
   */
  public SimpleTree simulateTree(
      Tree[] subtrees, DemographicModel model, double rootHeight, boolean preserveSubtrees) {

    SimpleNode[] roots = new SimpleNode[subtrees.length];
    SimpleTree tree;

    for (int i = 0; i < roots.length; i++) {
      roots[i] = new SimpleNode(subtrees[i], subtrees[i].getRoot());
    }

    // if just one taxonList then finished
    if (roots.length == 1) {
      tree = new SimpleTree(roots[0]);
    } else {
      tree = new SimpleTree(simulator.simulateCoalescent(roots, model.getDemographicFunction()));
    }

    if (!Double.isNaN(rootHeight) && rootHeight > 0.0) {
      if (preserveSubtrees) {
        limitNodes(tree, rootHeight - 1e-12);
        tree.setRootHeight(rootHeight);
      } else {
        attemptToScaleTree(tree, rootHeight);
      }
    }

    return tree;
  }
  private void remove() {
    final SimpleNode[] nodes = myTree.getSelectedNodesIfUniform();
    for (final SimpleNode node : nodes) {

      if (node instanceof FileSetNode) {
        final OfbizFileSet fileSet = ((FileSetNode) node).mySet;
        if (fileSet.getFiles().isEmpty()) {
          myBuffer.remove(fileSet);
          return;
        }

        final int result =
            Messages.showYesNoDialog(
                myPanel,
                String.format("Remove File Set '%s' ?", fileSet.getName()),
                "Confirm removal",
                Messages.getQuestionIcon());
        if (result == DialogWrapper.OK_EXIT_CODE) {
          if (fileSet.isAutodetected()) {
            fileSet.setRemoved(true);
            myBuffer.add(fileSet);
          } else {
            myBuffer.remove(fileSet);
          }
        }
      } else if (node instanceof ConfigFileNode) {
        final VirtualFilePointer filePointer = ((ConfigFileNode) node).myFilePointer;
        final OfbizFileSet fileSet = ((FileSetNode) node.getParent()).mySet;
        fileSet.removeFile(filePointer);
      }
    }
  }
 private void selectFileSet(final OfbizFileSet fileSet) {
   myTree.select(
       myBuilder,
       new SimpleNodeVisitor() {
         public boolean accept(final SimpleNode simpleNode) {
           if (simpleNode instanceof FileSetNode) {
             if (((FileSetNode) simpleNode).mySet.equals(fileSet)) {
               return true;
             }
           }
           return false;
         }
       },
       false);
 }
 @Nullable
 private FileSetNode getCurrentFileSetNode() {
   final SimpleNode selectedNode = myTree.getSelectedNode();
   if (selectedNode == null) {
     return null;
   }
   if (selectedNode instanceof FileSetNode) {
     return (FileSetNode) selectedNode;
   } else if (selectedNode.getParent() instanceof FileSetNode) {
     return (FileSetNode) selectedNode.getParent();
   } else {
     final SimpleNode parent = selectedNode.getParent();
     if (parent != null && parent.getParent() instanceof FileSetNode) {
       return (FileSetNode) selectedNode.getParent().getParent();
     }
   }
   return null;
 }
 @Override
 public int getTaxonCount() {
   return stree.getTaxonCount();
 }
 @Override
 public boolean hasBranchLengths() {
   return stree.hasBranchLengths();
 }
 @Override
 public Iterator<String> getAttributeNames() {
   return stree.getAttributeNames();
 }
 @Override
 public Iterator<Taxon> iterator() {
   return stree.iterator();
 }
 @Override
 public void setUnits(Type units) {
   stree.setUnits(units);
 }
 @Override
 public int getTaxonIndex(String id) {
   return stree.getTaxonIndex(id);
 }
 @Override
 public List<Taxon> asList() {
   return stree.asList();
 }
 @Override
 public boolean isRoot(NodeRef node) {
   return stree.isRoot(node);
 }
 @Override
 public int getChildCount(NodeRef node) {
   return stree.getChildCount(node);
 }
 @Override
 public Iterator getNodeAttributeNames(NodeRef node) {
   return stree.getNodeAttributeNames(node);
 }
 @Override
 public boolean isExternal(NodeRef node) {
   return stree.isExternal(node);
 }
 @Override
 public Object getNodeAttribute(NodeRef node, String name) {
   return stree.getNodeAttribute(node, name);
 }
 @Override
 public double getNodeRate(NodeRef node) {
   return stree.getNodeRate(node);
 }
 @Override
 public double getBranchLength(NodeRef node) {
   return stree.getBranchLength(node);
 }
 @Override
 public Taxon getTaxon(int taxonIndex) {
   return stree.getTaxon(taxonIndex);
 }
 @Override
 public NodeRef getChild(NodeRef node, int j) {
   return stree.getChild(node, j);
 }
 @Override
 public String getTaxonId(int taxonIndex) {
   return stree.getTaxonId(taxonIndex);
 }
 @Override
 public NodeRef getParent(NodeRef node) {
   return stree.getParent(node);
 }
 @Override
 public int getTaxonIndex(Taxon taxon) {
   return stree.getTaxonIndex(taxon);
 }
 @Override
 public boolean hasNodeHeights() {
   return stree.hasNodeHeights();
 }
 @Override
 public Object getTaxonAttribute(int taxonIndex, String name) {
   return stree.getTaxonAttribute(taxonIndex, name);
 }
 @Override
 public void setAttribute(String name, Object value) {
   stree.setAttribute(name, value);
 }
 @Override
 public Type getUnits() {
   return stree.getUnits();
 }
 @Override
 public Object getAttribute(String name) {
   return stree.getAttribute(name);
 }
 @Override
 public Tree getCopy() {
   return stree.getCopy();
 }
 @Override
 public double getNodeHeight(NodeRef node) {
   return stree.getNodeHeight(node);
 }