Program: 125148
Project: 125148
Buggy source:
/** 
 * Annotates the species tree branches with support, branch length, etc. 
 * @param st
 * @return
 */
private double scoreBranches(Tree st){
  double ret=0;
  weightCalculator=new BipartitionWeightCalculator(this,((WQWeightCalculator)this.weightCalculator).geneTreesAsInts());
  BipartitionWeightCalculator weightCalculator2=(BipartitionWeightCalculator)weightCalculator;
  WQDataCollection wqDataCollection=(WQDataCollection)this.dataCollection;
  BufferedWriter freqWriter=null;
  BufferedWriter Rscript=null;
  if (this.getBranchAnnotation() == 16) {
    String freqOutputPath=this.options.getFreqOutputPath();
    try {
      Rscript=new BufferedWriter(new FileWriter(freqOutputPath + File.separator + "String_Node_Str"));
      freqWriter=new BufferedWriter(new FileWriter(freqOutputPath + File.separator + "String_Node_Str"));
    }
 catch (    IOException e) {
      throw new RuntimeException(e);
    }
  }
  Stack<STITreeCluster> stack=new Stack<STITreeCluster>();
  int numNodes=0;
  for (  TNode n : st.postTraverse()) {
    STINode node=(STINode)n;
    if (node.isLeaf()) {
      String nodeName=node.getName();
      STITreeCluster cluster=GlobalMaps.taxonIdentifier.newCluster();
      Integer taxonID=GlobalMaps.taxonIdentifier.taxonId(nodeName);
      cluster.addLeaf(taxonID);
      stack.add(cluster);
      node.setData(cluster);
    }
 else {
      ArrayList<STITreeCluster> childbslist=new ArrayList<STITreeCluster>();
      BitSet bs=new BitSet(GlobalMaps.taxonIdentifier.taxonCount());
      for (      TNode child : n.getChildren()) {
        STITreeCluster pop=stack.pop();
        childbslist.add(pop);
        bs.or(pop.getBitSet());
      }
      STITreeCluster cluster=GlobalMaps.taxonIdentifier.newCluster();
      cluster.setCluster((BitSet)bs.clone());
      stack.add(cluster);
      node.setData(cluster);
      if (options.getBranchannotation() == 16) {
        String ndName="String_Node_Str" + Integer.toString(numNodes);
        numNodes+=1;
        node.setName(ndName);
      }
    }
  }
  stack=new Stack<STITreeCluster>();
  Queue<NodeData> nodeDataList=new LinkedList<NodeData>();
  for (  TNode n : st.postTraverse()) {
    STINode node=(STINode)n;
    if (node.isLeaf()) {
      stack.push((STITreeCluster)node.getData());
    }
 else {
      NodeData nd=null;
      STITreeCluster cluster=(STITreeCluster)node.getData();
      STITreeCluster c1=null, c2=null;
      long cs=cluster.getClusterSize() + 0l;
      for (int i=0; i < node.getChildCount(); i++) {
        if (c1 == null)         c1=stack.pop();
 else         if (c2 == null)         c2=stack.pop();
 else         stack.pop();
      }
      stack.push(cluster);
      if (cs > 1 && GlobalMaps.taxonNameMap.getSpeciesIdMapper().isSingleSP(cluster.getBitSet())) {
        STITreeCluster[] sisterRemaining=getSisterRemaining(node);
        STITreeCluster sister=sisterRemaining[0];
        STITreeCluster remaining=sisterRemaining[1];
        nd=new NodeData();
        nodeDataList.add(nd);
        nd.mainfreq=0d;
        nd.alt1freqs=0d;
        nd.alt2freqs=0d;
        nd.effn=0;
        BitSet bitSet=cluster.getBitSet();
        for (int j=bitSet.nextSetBit(0); j >= 0; j=bitSet.nextSetBit(j + 1)) {
          c1=new STITreeCluster(cluster);
          c1.getBitSet().clear(j);
          c2=GlobalMaps.taxonIdentifier.newCluster();
          c2.getBitSet().set(j);
          Quadrapartition[] threequads=new Quadrapartition[]{weightCalculator2.new Quadrapartition(c1,c2,sister,remaining),weightCalculator2.new Quadrapartition(c1,sister,c2,remaining),weightCalculator2.new Quadrapartition(c1,remaining,c2,sister)};
          Results s=weightCalculator2.getWeight(threequads);
          nd.mainfreq+=s.qs[0];
          nd.alt1freqs+=s.qs[1];
          nd.alt2freqs+=s.qs[2];
          nd.effn+=s.effn;
        }
        nd.mainfreq/=cs;
        nd.alt1freqs/=cs;
        nd.alt2freqs/=cs;
        nd.effn/=(int)cs;
        nd.quartcount=(cs * (cs - 1) / 2) * (sister.getClusterSize() + 0l) * (remaining.getClusterSize() + 0l);
      }
 else       if (!skipNode(node)) {
        STITreeCluster[] sisterRemaining=getSisterRemaining(node);
        STITreeCluster sister=sisterRemaining[0];
        STITreeCluster remaining=sisterRemaining[1];
        Quadrapartition[] threequads=new Quadrapartition[]{weightCalculator2.new Quadrapartition(c1,c2,sister,remaining),weightCalculator2.new Quadrapartition(c1,sister,c2,remaining),weightCalculator2.new Quadrapartition(c1,remaining,c2,sister)};
        Results s=weightCalculator2.getWeight(threequads);
        nd=new NodeData();
        nodeDataList.add(nd);
        nd.mainfreq=s.qs[0];
        nd.alt1freqs=s.qs[1];
        nd.alt2freqs=s.qs[2];
        nd.effn=s.effn;
        nd.quartcount=(c1.getClusterSize() + 0l) * (c2.getClusterSize() + 0l) * (sister.getClusterSize() + 0l)* (remaining.getClusterSize() + 0l);
        if (this.getBranchAnnotation() == 7) {
          if (remaining.getClusterSize() != 0 && sister.getClusterSize() != 0 && c2.getClusterSize() != 0 && c1.getClusterSize() != 0) {
            System.err.print(c1.toString() + c2.toString() + "String_Node_Str"+ sister.toString()+ remaining.toString()+ "String_Node_Str");
          }
        }
        if (this.getBranchAnnotation() == 6 || this.getBranchAnnotation() == 16) {
          STITreeCluster c1plussis=GlobalMaps.taxonIdentifier.newCluster();
          c1plussis.setCluster((BitSet)c1.getBitSet().clone());
          c1plussis.getBitSet().or(sister.getBitSet());
          STITreeCluster c1plusrem=GlobalMaps.taxonIdentifier.newCluster();
          c1plusrem.setCluster((BitSet)c1.getBitSet().clone());
          c1plusrem.getBitSet().or(remaining.getBitSet());
          STBipartition bmain=new STBipartition(cluster,cluster.complementaryCluster());
          STBipartition b2=new STBipartition(c1plussis,c1plussis.complementaryCluster());
          STBipartition b3=new STBipartition(c1plusrem,c1plusrem.complementaryCluster());
          STBipartition[] biparts=new STBipartition[]{bmain,b2,b3};
          nd.quads=threequads;
          nd.bipartitions=biparts;
        }
      }
      if (nd != null && nd.effn < 20) {
        System.err.println("String_Node_Str" + "String_Node_Str" + nd.effn + "String_Node_Str"+ GlobalMaps.taxonNameMap.getSpeciesIdMapper().getSTClusterForGeneCluster(cluster));
      }
    }
  }
  NodeData nd=null;
  for (  TNode n : st.postTraverse()) {
    STINode node=(STINode)n;
    if (!node.isLeaf()) {
      nd=nodeDataList.poll();
    }
    if (nd == null) {
      node.setData(null);
      continue;
    }
    Double f1=nd.mainfreq;
    Double f2=nd.alt1freqs;
    Double f3=nd.alt2freqs;
    Long quarc=nd.quartcount;
    Double effni=nd.effn + 0.0;
    if (Math.abs((f1 + f2 + f3) - effni) > 0.01) {
      effni=f1 + f2 + f3;
    }
    Posterior post=new Posterior(f1,f2,f3,(double)effni,options.getLambda());
    double bl=post.branchLength();
    node.setParentDistance(bl);
    if (this.getBranchAnnotation() == 0) {
      node.setData(null);
    }
 else     if (this.getBranchAnnotation() == 1) {
      node.setData(df.format((f1 + .0) / effni * 100));
    }
 else     if (this.getBranchAnnotation() == 10) {
      df.setMaximumFractionDigits(5);
      double pval=post.getPvalue();
      if (pval < 0) {
        System.err.println("String_Node_Str" + "String_Node_Str" + effni + "String_Node_Str"+ node);
        node.setData("String_Node_Str");
      }
 else {
        node.setData(df.format(pval));
      }
    }
 else {
      double postQ1=post.getPost();
      ret+=Math.log(postQ1);
      if (this.getBranchAnnotation() == 3 || this.getBranchAnnotation() == 12) {
        node.setData(df.format(postQ1));
      }
 else       if (this.getBranchAnnotation() % 2 == 0) {
        post=new Posterior(f2,f1,f3,(double)effni,options.getLambda());
        double postQ2=post.getPost();
        post=new Posterior(f3,f1,f2,(double)effni,options.getLambda());
        double postQ3=post.getPost();
        if (this.getBranchAnnotation() == 2)         node.setData("String_Node_Str" + (f1) / effni + "String_Node_Str" + (f2) / effni + "String_Node_Str" + (f3) / effni + "String_Node_Str" + f1 + "String_Node_Str" + f2 + "String_Node_Str" + f3 + "String_Node_Str" + postQ1 + "String_Node_Str" + postQ2 + "String_Node_Str" + postQ3 + "String_Node_Str" + quarc + "String_Node_Str" + effni + "String_Node_Str");
 else         if (this.getBranchAnnotation() == 4) {
          node.setData("String_Node_Str" + df.format(postQ1) + "String_Node_Str"+ df.format(postQ2)+ "String_Node_Str"+ df.format(postQ3)+ "String_Node_Str");
        }
 else         if (this.getBranchAnnotation() == 6) {
          node.setData(df.format(postQ1));
          Quadrapartition[] threequads=nd.quads;
          STBipartition[] biparts=nd.bipartitions;
          System.err.println(threequads[0] + "String_Node_Str" + biparts[0].toString2()+ "String_Node_Str"+ postQ1+ "String_Node_Str"+ f1+ "String_Node_Str"+ f2+ "String_Node_Str"+ f3+ "String_Node_Str"+ effni+ "String_Node_Str");
          System.err.println(threequads[1] + "String_Node_Str" + biparts[1].toString2()+ "String_Node_Str"+ postQ2+ "String_Node_Str"+ f2+ "String_Node_Str"+ f1+ "String_Node_Str"+ f3+ "String_Node_Str"+ effni+ "String_Node_Str");
          System.err.println(threequads[2] + "String_Node_Str" + biparts[2].toString2()+ "String_Node_Str"+ postQ3+ "String_Node_Str"+ f3+ "String_Node_Str"+ f1+ "String_Node_Str"+ f2+ "String_Node_Str"+ effni+ "String_Node_Str");
        }
 else         if (this.getBranchAnnotation() == 8) {
          node.setData("String_Node_Str" + df.format((f1) / effni) + "String_Node_Str"+ df.format((f2) / effni)+ "String_Node_Str"+ df.format((f3) / effni)+ "String_Node_Str");
        }
 else         if (this.getBranchAnnotation() == 16) {
          node.setData("String_Node_Str" + df.format(postQ1) + "String_Node_Str"+ df.format(postQ2)+ "String_Node_Str"+ df.format(postQ3)+ "String_Node_Str");
          Quadrapartition[] threequads=nd.quads;
          String lineTmp=node.getName() + "String_Node_Str" + "String_Node_Str"+ "String_Node_Str"+ threequads[0].toString2()+ "String_Node_Str"+ Double.toString(postQ1)+ "String_Node_Str"+ Double.toString(f1)+ "String_Node_Str"+ Double.toString(effni);
          try {
            freqWriter.write(lineTmp + "String_Node_Str");
            lineTmp=node.getName() + "String_Node_Str" + "String_Node_Str"+ "String_Node_Str"+ threequads[1].toString2()+ "String_Node_Str"+ Double.toString(postQ2)+ "String_Node_Str"+ Double.toString(f2)+ "String_Node_Str"+ Double.toString(effni);
            freqWriter.write(lineTmp + "String_Node_Str");
            lineTmp=node.getName() + "String_Node_Str" + "String_Node_Str"+ "String_Node_Str"+ threequads[2].toString2()+ "String_Node_Str"+ Double.toString(postQ3)+ "String_Node_Str"+ Double.toString(f3)+ "String_Node_Str"+ Double.toString(effni);
            freqWriter.write(lineTmp + "String_Node_Str");
          }
 catch (          IOException e) {
            throw new RuntimeException(e);
          }
        }
      }
    }
  }
  if (!nodeDataList.isEmpty())   throw new RuntimeException("String_Node_Str" + nodeDataList);
  if (this.getBranchAnnotation() == 16) {
    try {
      Rscript.write("String_Node_Str");
      Rscript.write("String_Node_Str");
      Rscript.write("String_Node_Str");
      Rscript.write("String_Node_Str" + "String_Node_Str");
      Rscript.write("String_Node_Str");
      Rscript.write("String_Node_Str");
      Rscript.write("String_Node_Str" + "String_Node_Str" + "String_Node_Str"+ "String_Node_Str"+ "String_Node_Str");
      Rscript.write("String_Node_Str");
      Rscript.close();
      freqWriter.close();
    }
 catch (    IOException e) {
      throw new RuntimeException("String_Node_Str");
    }
  }
  System.err.println(st);
  return ret;
}

Fixed version (ground truth):
/** 
 * Annotates the species tree branches with support, branch length, etc. 
 * @param st
 * @return
 */
private double scoreBranches(Tree st){
  double ret=0;
  weightCalculator=new BipartitionWeightCalculator(this,((WQWeightCalculator)this.weightCalculator).geneTreesAsInts());
  BipartitionWeightCalculator weightCalculator2=(BipartitionWeightCalculator)weightCalculator;
  WQDataCollection wqDataCollection=(WQDataCollection)this.dataCollection;
  BufferedWriter freqWriter=null;
  BufferedWriter Rscript=null;
  if (this.getBranchAnnotation() == 16) {
    String freqOutputPath=this.options.getFreqOutputPath();
    try {
      Rscript=new BufferedWriter(new FileWriter(freqOutputPath + File.separator + "String_Node_Str"));
      freqWriter=new BufferedWriter(new FileWriter(freqOutputPath + File.separator + "String_Node_Str"));
    }
 catch (    IOException e) {
      throw new RuntimeException(e);
    }
  }
  Stack<STITreeCluster> stack=new Stack<STITreeCluster>();
  int numNodes=0;
  for (  TNode n : st.postTraverse()) {
    STINode node=(STINode)n;
    if (node.isLeaf()) {
      String nodeName=node.getName();
      STITreeCluster cluster=GlobalMaps.taxonIdentifier.newCluster();
      Integer taxonID=GlobalMaps.taxonIdentifier.taxonId(nodeName);
      cluster.addLeaf(taxonID);
      stack.add(cluster);
      node.setData(cluster);
    }
 else {
      ArrayList<STITreeCluster> childbslist=new ArrayList<STITreeCluster>();
      BitSet bs=new BitSet(GlobalMaps.taxonIdentifier.taxonCount());
      for (      TNode child : n.getChildren()) {
        STITreeCluster pop=stack.pop();
        childbslist.add(pop);
        bs.or(pop.getBitSet());
      }
      STITreeCluster cluster=GlobalMaps.taxonIdentifier.newCluster();
      cluster.setCluster((BitSet)bs.clone());
      stack.add(cluster);
      node.setData(cluster);
      if (options.getBranchannotation() == 16) {
        String ndName="String_Node_Str" + Integer.toString(numNodes);
        numNodes+=1;
        node.setName(ndName);
      }
    }
  }
  stack=new Stack<STITreeCluster>();
  Queue<NodeData> nodeDataList=new LinkedList<NodeData>();
  for (  TNode n : st.postTraverse()) {
    STINode node=(STINode)n;
    if (node.isLeaf()) {
      stack.push((STITreeCluster)node.getData());
    }
 else {
      NodeData nd=null;
      STITreeCluster cluster=(STITreeCluster)node.getData();
      STITreeCluster c1=null, c2=null;
      long cs=cluster.getClusterSize() + 0l;
      for (int i=0; i < node.getChildCount(); i++) {
        if (c1 == null)         c1=stack.pop();
 else         if (c2 == null)         c2=stack.pop();
 else         stack.pop();
      }
      stack.push(cluster);
      if (cs > 1 && GlobalMaps.taxonNameMap.getSpeciesIdMapper().isSingleSP(cluster.getBitSet())) {
        STITreeCluster[] sisterRemaining=getSisterRemaining(node);
        STITreeCluster sister=sisterRemaining[0];
        STITreeCluster remaining=sisterRemaining[1];
        nd=new NodeData();
        nodeDataList.add(nd);
        nd.mainfreq=0d;
        nd.alt1freqs=0d;
        nd.alt2freqs=0d;
        nd.effn=0;
        BitSet bitSet=cluster.getBitSet();
        for (int j=bitSet.nextSetBit(0); j >= 0; j=bitSet.nextSetBit(j + 1)) {
          c1=new STITreeCluster(cluster);
          c1.getBitSet().clear(j);
          c2=GlobalMaps.taxonIdentifier.newCluster();
          c2.getBitSet().set(j);
          Quadrapartition[] threequads=new Quadrapartition[]{weightCalculator2.new Quadrapartition(c1,c2,sister,remaining),weightCalculator2.new Quadrapartition(c1,sister,c2,remaining),weightCalculator2.new Quadrapartition(c1,remaining,c2,sister)};
          Results s=weightCalculator2.getWeight(threequads);
          nd.mainfreq+=s.qs[0];
          nd.alt1freqs+=s.qs[1];
          nd.alt2freqs+=s.qs[2];
          nd.effn+=s.effn;
        }
        nd.mainfreq/=cs;
        nd.alt1freqs/=cs;
        nd.alt2freqs/=cs;
        nd.effn/=(int)cs;
        nd.quartcount=(cs * (cs - 1) / 2) * (sister.getClusterSize() + 0l) * (remaining.getClusterSize() + 0l);
      }
 else       if (!skipNode(node)) {
        STITreeCluster[] sisterRemaining=getSisterRemaining(node);
        STITreeCluster sister=sisterRemaining[0];
        STITreeCluster remaining=sisterRemaining[1];
        Quadrapartition[] threequads=new Quadrapartition[]{weightCalculator2.new Quadrapartition(c1,c2,sister,remaining),weightCalculator2.new Quadrapartition(c1,sister,c2,remaining),weightCalculator2.new Quadrapartition(c1,remaining,c2,sister)};
        Results s=weightCalculator2.getWeight(threequads);
        nd=new NodeData();
        nodeDataList.add(nd);
        nd.mainfreq=s.qs[0];
        nd.alt1freqs=s.qs[1];
        nd.alt2freqs=s.qs[2];
        nd.effn=s.effn;
        nd.quartcount=(c1.getClusterSize() + 0l) * (c2.getClusterSize() + 0l) * (sister.getClusterSize() + 0l)* (remaining.getClusterSize() + 0l);
        if (this.getBranchAnnotation() == 7) {
          if (remaining.getClusterSize() != 0 && sister.getClusterSize() != 0 && c2.getClusterSize() != 0 && c1.getClusterSize() != 0) {
            System.err.print(c1.toString() + c2.toString() + "String_Node_Str"+ sister.toString()+ remaining.toString()+ "String_Node_Str");
          }
        }
        if (this.getBranchAnnotation() == 6 || this.getBranchAnnotation() == 16) {
          STITreeCluster c1plussis=GlobalMaps.taxonIdentifier.newCluster();
          c1plussis.setCluster((BitSet)c1.getBitSet().clone());
          c1plussis.getBitSet().or(sister.getBitSet());
          STITreeCluster c1plusrem=GlobalMaps.taxonIdentifier.newCluster();
          c1plusrem.setCluster((BitSet)c1.getBitSet().clone());
          c1plusrem.getBitSet().or(remaining.getBitSet());
          STBipartition bmain=new STBipartition(cluster,cluster.complementaryCluster());
          STBipartition b2=new STBipartition(c1plussis,c1plussis.complementaryCluster());
          STBipartition b3=new STBipartition(c1plusrem,c1plusrem.complementaryCluster());
          STBipartition[] biparts=new STBipartition[]{bmain,b2,b3};
          nd.quads=threequads;
          nd.bipartitions=biparts;
        }
      }
      if (nd != null && nd.effn < 20) {
        System.err.println("String_Node_Str" + "String_Node_Str" + nd.effn + "String_Node_Str"+ GlobalMaps.taxonNameMap.getSpeciesIdMapper().getSTClusterForGeneCluster(cluster));
      }
    }
  }
  NodeData nd=null;
  for (  TNode n : st.postTraverse()) {
    STINode node=(STINode)n;
    if (node.isLeaf()) {
      node.setData(null);
      continue;
    }
    nd=nodeDataList.poll();
    if (nd == null) {
      node.setData(null);
      continue;
    }
    Double f1=nd.mainfreq;
    Double f2=nd.alt1freqs;
    Double f3=nd.alt2freqs;
    Long quarc=nd.quartcount;
    Double effni=nd.effn + 0.0;
    if (Math.abs((f1 + f2 + f3) - effni) > 0.01) {
      effni=f1 + f2 + f3;
    }
    Posterior post=new Posterior(f1,f2,f3,(double)effni,options.getLambda());
    double bl=post.branchLength();
    node.setParentDistance(bl);
    if (this.getBranchAnnotation() == 0) {
      node.setData(null);
    }
 else     if (this.getBranchAnnotation() == 1) {
      node.setData(df.format((f1 + .0) / effni * 100));
    }
 else     if (this.getBranchAnnotation() == 10) {
      df.setMaximumFractionDigits(5);
      double pval=post.getPvalue();
      if (pval < 0) {
        System.err.println("String_Node_Str" + "String_Node_Str" + effni + "String_Node_Str"+ node);
        node.setData("String_Node_Str");
      }
 else {
        node.setData(df.format(pval));
      }
    }
 else {
      double postQ1=post.getPost();
      ret+=Math.log(postQ1);
      if (this.getBranchAnnotation() == 3 || this.getBranchAnnotation() == 12) {
        node.setData(df.format(postQ1));
      }
 else       if (this.getBranchAnnotation() % 2 == 0) {
        post=new Posterior(f2,f1,f3,(double)effni,options.getLambda());
        double postQ2=post.getPost();
        post=new Posterior(f3,f1,f2,(double)effni,options.getLambda());
        double postQ3=post.getPost();
        if (this.getBranchAnnotation() == 2)         node.setData("String_Node_Str" + (f1) / effni + "String_Node_Str" + (f2) / effni + "String_Node_Str" + (f3) / effni + "String_Node_Str" + f1 + "String_Node_Str" + f2 + "String_Node_Str" + f3 + "String_Node_Str" + postQ1 + "String_Node_Str" + postQ2 + "String_Node_Str" + postQ3 + "String_Node_Str" + quarc + "String_Node_Str" + effni + "String_Node_Str");
 else         if (this.getBranchAnnotation() == 4) {
          node.setData("String_Node_Str" + df.format(postQ1) + "String_Node_Str"+ df.format(postQ2)+ "String_Node_Str"+ df.format(postQ3)+ "String_Node_Str");
        }
 else         if (this.getBranchAnnotation() == 6) {
          node.setData(df.format(postQ1));
          Quadrapartition[] threequads=nd.quads;
          STBipartition[] biparts=nd.bipartitions;
          System.err.println(threequads[0] + "String_Node_Str" + biparts[0].toString2()+ "String_Node_Str"+ postQ1+ "String_Node_Str"+ f1+ "String_Node_Str"+ f2+ "String_Node_Str"+ f3+ "String_Node_Str"+ effni+ "String_Node_Str");
          System.err.println(threequads[1] + "String_Node_Str" + biparts[1].toString2()+ "String_Node_Str"+ postQ2+ "String_Node_Str"+ f2+ "String_Node_Str"+ f1+ "String_Node_Str"+ f3+ "String_Node_Str"+ effni+ "String_Node_Str");
          System.err.println(threequads[2] + "String_Node_Str" + biparts[2].toString2()+ "String_Node_Str"+ postQ3+ "String_Node_Str"+ f3+ "String_Node_Str"+ f1+ "String_Node_Str"+ f2+ "String_Node_Str"+ effni+ "String_Node_Str");
        }
 else         if (this.getBranchAnnotation() == 8) {
          node.setData("String_Node_Str" + df.format((f1) / effni) + "String_Node_Str"+ df.format((f2) / effni)+ "String_Node_Str"+ df.format((f3) / effni)+ "String_Node_Str");
        }
 else         if (this.getBranchAnnotation() == 16) {
          node.setData("String_Node_Str" + df.format(postQ1) + "String_Node_Str"+ df.format(postQ2)+ "String_Node_Str"+ df.format(postQ3)+ "String_Node_Str");
          Quadrapartition[] threequads=nd.quads;
          String lineTmp=node.getName() + "String_Node_Str" + "String_Node_Str"+ "String_Node_Str"+ threequads[0].toString2()+ "String_Node_Str"+ Double.toString(postQ1)+ "String_Node_Str"+ Double.toString(f1)+ "String_Node_Str"+ Double.toString(effni);
          try {
            freqWriter.write(lineTmp + "String_Node_Str");
            lineTmp=node.getName() + "String_Node_Str" + "String_Node_Str"+ "String_Node_Str"+ threequads[1].toString2()+ "String_Node_Str"+ Double.toString(postQ2)+ "String_Node_Str"+ Double.toString(f2)+ "String_Node_Str"+ Double.toString(effni);
            freqWriter.write(lineTmp + "String_Node_Str");
            lineTmp=node.getName() + "String_Node_Str" + "String_Node_Str"+ "String_Node_Str"+ threequads[2].toString2()+ "String_Node_Str"+ Double.toString(postQ3)+ "String_Node_Str"+ Double.toString(f3)+ "String_Node_Str"+ Double.toString(effni);
            freqWriter.write(lineTmp + "String_Node_Str");
          }
 catch (          IOException e) {
            throw new RuntimeException(e);
          }
        }
      }
    }
  }
  if (!nodeDataList.isEmpty())   throw new RuntimeException("String_Node_Str" + nodeDataList);
  if (this.getBranchAnnotation() == 16) {
    try {
      Rscript.write("String_Node_Str");
      Rscript.write("String_Node_Str");
      Rscript.write("String_Node_Str");
      Rscript.write("String_Node_Str" + "String_Node_Str");
      Rscript.write("String_Node_Str");
      Rscript.write("String_Node_Str");
      Rscript.write("String_Node_Str" + "String_Node_Str" + "String_Node_Str"+ "String_Node_Str"+ "String_Node_Str");
      Rscript.write("String_Node_Str");
      Rscript.close();
      freqWriter.close();
    }
 catch (    IOException e) {
      throw new RuntimeException("String_Node_Str");
    }
  }
  System.err.println(st.toStringWD());
  return ret;
}