public static final String PAIRPROFILE = "B";
-/**
- * Returns the 3' position of a base pair
- * @param pairs Secondary structure annotation
- * @param indice 5' position of a base pair
- * @return 3' position of a base pair
- */
+ /**
+ * Returns the 3' position of a base pair
+ *
+ * @param pairs
+ * Secondary structure annotation
+ * @param indice
+ * 5' position of a base pair
+ * @return 3' position of a base pair
+ */
public static int findPair(SequenceFeature[] pairs, int indice)
{
for (int i = 0; i < pairs.length; i++)
values = new int[255];
pairs = new int[255][255];
bpEnd = -1;
- if(i<struc.length){
+ if (i < struc.length)
+ {
s = struc[i];
- }else{
+ }
+ else
+ {
s = '-';
}
if (s == '.' || s == ' ')
result[i] = residueHash;
}
if (bpEnd > 0)
- {
- values[')']=values['('];
- values['(']=0;
-
+ {
+ values[')'] = values['('];
+ values['('] = 0;
+
residueHash = new Hashtable();
maxResidue = ")";
-
+
if (profile)
{
residueHash.put(PROFILE, new int[][]
residueHash.put(PAIRPROFILE, pairs);
}
-
+
residueHash.put(MAXCOUNT, new Integer(count));
residueHash.put(MAXRESIDUE, maxResidue);
percentage = ((float) count * 100) / (float) jSize;
residueHash.put(PID_GAPS, new Float(percentage));
-
result[bpEnd] = residueHash;
}
}
boolean ignoreGapsInConsensusCalculation,
boolean includeAllConsSymbols)
{
- completeConsensus(consensus, hconsensus, iStart, width,
- ignoreGapsInConsensusCalculation, includeAllConsSymbols, null); // new
- // char[]
- // { 'A', 'C', 'G', 'T', 'U' });
- }
-
- public static void completeConsensus(AlignmentAnnotation consensus,
- Hashtable[] hconsensus, int iStart, int width,
- boolean ignoreGapsInConsensusCalculation,
- boolean includeAllConsSymbols, char[] alphabet)
- {
float tval, value;
if (consensus == null || consensus.annotations == null
|| consensus.annotations.length < width)
}
int[][] profile = (int[][]) hconsensus[i]
.get(StructureFrequency.PROFILE);
- if (profile != null && includeAllConsSymbols) // Just responsible for the
+ int[][] pairs = (int[][]) hconsensus[i]
+ .get(StructureFrequency.PAIRPROFILE);
+
+ if (pairs != null && includeAllConsSymbols) // Just responsible for the
// tooltip
- //TODO Update tooltips for Structure row
+ // TODO Update tooltips for Structure row
{
mouseOver = "";
- if (alphabet != null)
+
+ /* TODO It's not sure what is the purpose of the alphabet and wheter it is useful for structure?
+ *
+ * if (alphabet != null) { for (int c = 0; c < alphabet.length; c++) {
+ * tval = ((float) profile[0][alphabet[c]]) 100f / (float)
+ * profile[1][ignoreGapsInConsensusCalculation ? 1 : 0]; mouseOver +=
+ * ((c == 0) ? "" : "; ") + alphabet[c] + " " + ((int) tval) + "%"; } }
+ * else {
+ */
+ Object[] ca = new Object[625];
+ float[] vl = new float[625];
+ int x = 0;
+ for (int c = 65; c < 90; c++)
{
- for (int c = 0; c < alphabet.length; c++)
+ for (int d = 65; d < 90; d++)
{
- tval = ((float) profile[0][alphabet[c]])
- * 100f
- / (float) profile[1][ignoreGapsInConsensusCalculation ? 1
- : 0];
- mouseOver += ((c == 0) ? "" : "; ") + alphabet[c] + " "
- + ((int) tval) + "%";
+ ca[x] = new int[]
+ { c, d };
+ vl[x] = (float) pairs[c][d];
+ x++;
}
}
- else
+ jalview.util.QuickSort.sort(vl, ca);
+ int p = 0;
+
+ for (int c = 624; c > 0; c--)
{
- Object[] ca = new Object[profile[0].length];
- float[] vl = new float[profile[0].length];
- for (int c = 0; c < ca.length; c++)
- {
- ca[c] = new char[]
- { (char) c };
- vl[c] = (float) profile[0][c];
- }
- ;
- jalview.util.QuickSort.sort(vl, ca);
- for (int p = 0, c = ca.length - 1; profile[0][((char[]) ca[c])[0]] > 0; c--)
+ if (vl[c] > 0)
{
- if (((char[]) ca[c])[0] != '-')
- {
- tval = ((float) profile[0][((char[]) ca[c])[0]])
- * 100f
- / (float) profile[1][ignoreGapsInConsensusCalculation ? 1
- : 0];
- mouseOver += ((p == 0) ? "" : "; ") + ((char[]) ca[c])[0]
- + " " + ((int) tval) + "%";
- p++;
+ tval = ((float) vl[c] * 100f / (float) profile[1][ignoreGapsInConsensusCalculation ? 1
+ : 0]);
+ mouseOver += ((p == 0) ? "" : "; ") + (char) ((int[]) ca[c])[0]
+ + (char) ((int[]) ca[c])[1] + " " + ((int) tval) + "%";
+ p++;
- }
}
-
}
+
+ // }
}
else
{
* @return profile of the given column
*/
public static int[] extractProfile(Hashtable hconsensus,
- boolean ignoreGapsInConsensusCalculation, int column)
+ boolean ignoreGapsInConsensusCalculation)
{
- // TODO is there a more elegant way to acces the column number?
- /*
- * calculate the frequence of the 16 bp variations for this column 'somehow'
- * transfer this via getProfile and let it correctly draw
- */
int[] rtnval = new int[51]; // 2*(5*5)+1
int[][] profile = (int[][]) hconsensus.get(StructureFrequency.PROFILE);
int[][] pairs = (int[][]) hconsensus
if (profile == null)
return null;
-
+
+ // TODO fix the object length, also do it in completeConsensus
Object[] ca = new Object[625];
float[] vl = new float[625];
- int x=0;
+ int x = 0;
for (int c = 65; c < 90; c++)
{
- for(int d = 65; d< 90; d++)
+ for (int d = 65; d < 90; d++)
{
- ca[x] = new int[]{ c, d};
- vl[x] = (float) pairs[c][d];
- x++;
+ ca[x] = new int[]
+ { c, d };
+ vl[x] = (float) pairs[c][d];
+ x++;
}
}
jalview.util.QuickSort.sort(vl, ca);
-
+
rtnval[0] = 1;
- for (int c=624; c>0; c--)
+ for (int c = 624; c > 0; c--)
{
- if (vl[c]>0)
+ if (vl[c] > 0)
{
rtnval[rtnval[0]++] = ((int[]) ca[c])[0];
rtnval[rtnval[0]++] = ((int[]) ca[c])[1];
rtnval[rtnval[0]++] = (int) ((float) vl[c] * 100f / (float) profile[1][ignoreGapsInConsensusCalculation ? 1
: 0]);
- }
+ }
}
-
+
return rtnval;
}