Merge branch 'JAL-1373_precision' into develop
authorJim Procter <jprocter@compbio.dundee.ac.uk>
Mon, 2 Sep 2013 17:14:45 +0000 (18:14 +0100)
committerJim Procter <jprocter@compbio.dundee.ac.uk>
Mon, 2 Sep 2013 17:14:45 +0000 (18:14 +0100)
1  2 
src/jalview/analysis/StructureFrequency.java

@@@ -21,6 -21,7 +21,7 @@@ package jalview.analysis
  
  import java.util.*;
  
+ import jalview.util.Format;
  import jalview.datamodel.*;
  
  /**
@@@ -59,15 -60,11 +60,15 @@@ public class StructureFrequenc
     */
    public static int findPair(SequenceFeature[] pairs, int indice)
    {
 +        System.out.print("indice"+indice+"    ");
      for (int i = 0; i < pairs.length; i++)
      {
        if (pairs[i].getBegin() == indice)
 +       
        {
 +        System.out.println(pairs[i].getEnd());
          return pairs[i].getEnd();
 +        
        }
      }
      return -1;
            int end, Hashtable[] result, boolean profile,
            AlignmentAnnotation rnaStruc)
    {
 +//    System.out.println("longueur="+sequences.length);
 +//    for(int l=0;l<=(sequences.length-1);l++){  
 +//    System.out.println("sequences "+l+":"+sequences[l].getSequenceAsString());
 +//    }
 +//    System.out.println("start="+start);
 +      System.out.println("end="+end);
 +//    System.out.println("result="+result.length);
 +//
 +//    System.out.println("profile="+profile);
 +//    System.out.println("rnaStruc="+rnaStruc);
      Hashtable residueHash;
      String maxResidue;
 -    char[] seq, struc = rnaStruc.getRNAStruc().toCharArray();
 +    char[] struc = rnaStruc.getRNAStruc().toCharArray();
      SequenceFeature[] rna = rnaStruc._rnasecstr;
      char c, s, cEnd;
 -    int count, nonGap = 0, i, bpEnd = -1, j, jSize = sequences.length;
 +    int count = 0, nonGap = 0, i, bpEnd = -1, j, jSize = sequences.length;
      int[] values;
      int[][] pairs;
      float percentage;
 +    boolean wooble = true;
  
      for (i = start; i < end; i++) // foreach column
      {
        values = new int[255];
        pairs = new int[255][255];
        bpEnd = -1;
 +      //System.out.println("s="+struc[i]);
        if (i < struc.length)
        {
          s = struc[i];
 +        
        }
        else
        {
          s = '-';
        }
  
 -      if (s != '(')
 +      if (s != '(' && s != '[')
        {
          if (s == '-')
          {
        }
        else
        {
 +       
 +        
          bpEnd = findPair(rna, i);
 -        if (bpEnd > -1)
 +       
 +        if (bpEnd>-1)
          {
 -          for (j = 0; j < jSize; j++) // foreach row
 +        for (j = 0; j < jSize; j++) // foreach row
 +        {
 +          if (sequences[j] == null)
            {
 -            if (sequences[j] == null)
 +            System.err
 +                    .println("WARNING: Consensus skipping null sequence - possible race condition.");
 +            continue;
 +          }
 +          c = sequences[j].getCharAt(i);
 +          //System.out.println("c="+c);
 +          
 +
 +            // standard representation for gaps in sequence and structure
 +            if (c == '.' || c == ' ')
              {
                System.err
                        .println("WARNING: Consensus skipping null sequence - possible race condition.");
                continue;
              }
 -            c = sequences[j].getCharAt(i);
 +            cEnd = sequences[j].getCharAt(bpEnd);
 +         
 +         
 +            System.out.println("pairs ="+c+","+cEnd);
 +            if (checkBpType(c, cEnd)==true)
              {
 -
 -              // standard representation for gaps in sequence and structure
 -              if (c == '.' || c == ' ')
 -              {
 -                c = '-';
 -              }
 -
 -              if (c == '-')
 -              {
 -                values['-']++;
 -                continue;
 -              }
 -              cEnd = sequences[j].getCharAt(bpEnd);
 -              if (checkBpType(c, cEnd))
 -              {
 -                values['(']++; // H means it's a helix (structured)
 -              }
 -              pairs[c][cEnd]++;
 -
 +              values['(']++; // H means it's a helix (structured)
                maxResidue = "(";
 +              wooble=true;
 +              System.out.println("It's a pair wc");
 +              
              }
 -          }
 +            if (checkBpType(c, cEnd)==false)
 +            {
 +              wooble =false;
 +              values['[']++; // H means it's a helix (structured)
 +              maxResidue = "[";
 +              System.out.println("It's an pair non canonic");
 +              System.out.println(sequences[j].getRNA());
 +              System.out.println(rnaStruc.getRNAStruc().charAt(i));
 +            }
 +            pairs[c][cEnd]++;  
 +           
 +          
 +              }
 +
          }
          // nonGap++;
        }
  
          residueHash.put(PAIRPROFILE, pairs);
        }
 -
 +      if (wooble==true)
 +      {
        count = values['('];
 -
 +      }
 +      if (wooble==false)
 +      {
 +      count = values['['];
 +      }
        residueHash.put(MAXCOUNT, new Integer(count));
        residueHash.put(MAXRESIDUE, maxResidue);
  
        }
        if (bpEnd > 0)
        {
 -        values[')'] = values['('];
 +      values[')'] = values['('];
 +        values[']'] = values['['];
          values['('] = 0;
 -
 +        values['['] = 0;
          residueHash = new Hashtable();
 -        maxResidue = ")";
 -
 +        if (wooble==true){
 +              System.out.println(maxResidue+","+wooble);
 +              maxResidue = ")";
 +        }
 +        if(wooble==false){
 +              System.out.println(maxResidue+","+wooble);
 +              maxResidue = "]";
 +        }
          if (profile)
          {
            residueHash.put(PROFILE, new int[][]
    public static void completeConsensus(AlignmentAnnotation consensus,
            Hashtable[] hconsensus, int iStart, int width,
            boolean ignoreGapsInConsensusCalculation,
-           boolean includeAllConsSymbols)
+           boolean includeAllConsSymbols, long nseq)
    {
      float tval, value;
      if (consensus == null || consensus.annotations == null
        // initialised properly
        return;
      }
+     String fmtstr="%3.1f";
+     int precision=2;
+     while (nseq>100) {
+       precision++;
+       nseq/=10;
+     }
+     if (precision>2)
+     {
+       fmtstr = "%"+(2+precision)+"."+precision+"f";
+     }
+     Format fmt = new Format(fmtstr);
+     
      for (int i = iStart; i < width; i++)
      {
        Hashtable hci;
              tval = (vl[c] * 100f / profile[1][ignoreGapsInConsensusCalculation ? 1
                      : 0]);
              mouseOver += ((p == 0) ? "" : "; ") + (char) ((int[]) ca[c])[0]
-                     + (char) ((int[]) ca[c])[1] + " " + ((int) tval) + "%";
+                     + (char) ((int[]) ca[c])[1] + " " + fmt.form(tval) + "%";
              p++;
  
            }
        }
        else
        {
-         mouseOver += ((int) value + "%");
+         mouseOver += (fmt.form(value) + "%");
        }
        consensus.annotations[i] = new Annotation(maxRes, mouseOver, ' ',
                value);