-
- wrapAlignment = jalview.bin.Cache.getDefault("WRAP_ALIGNMENT", false);
- }
-
- /**
- * DOCUMENT ME!
- *
- * @param b DOCUMENT ME!
- */
- public void setShowSequenceFeatures(boolean b)
- {
- showSequenceFeatures = b;
- }
-
- public boolean getShowSequenceFeatures()
- {
- return showSequenceFeatures;
- }
-
- class ConservationThread
- extends Thread
- {
- AlignmentPanel ap;
- public ConservationThread(AlignmentPanel ap)
- {
- this.ap = ap;
- }
-
- public void run()
- {
- try
- {
- updatingConservation = true;
-
- while (UPDATING_CONSERVATION)
- {
- try
- {
- if (ap != null)
- {
- ap.paintAlignment(true);
- }
- Thread.sleep(200);
- }
- catch (Exception ex)
- {
- ex.printStackTrace();
- }
- }
-
- UPDATING_CONSERVATION = true;
-
- int alWidth = alignment.getWidth();
- if (alWidth < 0)
- {
- return;
- }
-
- Conservation cons = new jalview.analysis.Conservation("All",
- jalview.schemes.ResidueProperties.propHash, 3,
- alignment.getSequences(), 0, alWidth - 1);
-
- cons.calculate();
- cons.verdict(false, ConsPercGaps);
-
- if (quality != null)
- {
- cons.findQuality();
- }
-
- char[] sequence = cons.getConsSequence().getSequence();
- float minR;
- float minG;
- float minB;
- float maxR;
- float maxG;
- float maxB;
- minR = 0.3f;
- minG = 0.0f;
- minB = 0f;
- maxR = 1.0f - minR;
- maxG = 0.9f - minG;
- maxB = 0f - minB; // scalable range for colouring both Conservation and Quality
-
- float min = 0f;
- float max = 11f;
- float qmin = 0f;
- float qmax = 0f;
-
- char c;
-
- conservation.annotations = new Annotation[alWidth];
-
- if (quality != null)
- {
- quality.graphMax = cons.qualityRange[1].floatValue();
- quality.annotations = new Annotation[alWidth];
- qmin = cons.qualityRange[0].floatValue();
- qmax = cons.qualityRange[1].floatValue();
- }
-
- for (int i = 0; i < alWidth; i++)
- {
- float value = 0;
-
- c = sequence[i];
-
- if (Character.isDigit(c))
- {
- value = (int) (c - '0');
- }
- else if (c == '*')
- {
- value = 11;
- }
- else if (c == '+')
- {
- value = 10;
- }
-
- float vprop = value - min;
- vprop /= max;
- conservation.annotations[i] =
- new Annotation(String.valueOf(c),
- String.valueOf(value), ' ', value,
- new Color(minR + (maxR * vprop),
- minG + (maxG * vprop),
- minB + (maxB * vprop)));
-
- // Quality calc
- if (quality != null)
- {
- value = ( (Double) cons.quality.get(i)).floatValue();
- vprop = value - qmin;
- vprop /= qmax;
- quality.annotations[i] = new Annotation(" ", String.valueOf(value),
- ' ',
- value,
- new Color(minR + (maxR * vprop),
- minG + (maxG * vprop),
- minB + (maxB * vprop)));
- }
- }
- }
- catch (OutOfMemoryError error)
- {
- javax.swing.SwingUtilities.invokeLater(new Runnable()
- {
-
- public void run()
- {
- javax.swing.JOptionPane.showInternalMessageDialog(Desktop.desktop,
- "Out of memory calculating conservation!!"
- +
- "\nSee help files for increasing Java Virtual Machine memory."
- , "Out of memory",
- javax.swing.JOptionPane.WARNING_MESSAGE);
- }
- });
-
- conservation = null;
- quality = null;
-
- System.out.println("Conservation calculation: " + error);
- System.gc();
-
- }
-
- UPDATING_CONSERVATION = false;
- updatingConservation = false;
-
- if (ap != null)
- {
- ap.paintAlignment(true);
- }
-
- }
- }
-
- ConservationThread conservationThread;
-
- ConsensusThread consensusThread;
-
- boolean consUpdateNeeded = false;
-
- static boolean UPDATING_CONSENSUS = false;
-
- static boolean UPDATING_CONSERVATION = false;
-
- boolean updatingConsensus = false;
-
- boolean updatingConservation = false;
-
- /**
- * DOCUMENT ME!
- */
- public void updateConservation(final AlignmentPanel ap)
- {
- if (alignment.isNucleotide() || conservation == null)
- {
- return;
- }
-
- conservationThread = new ConservationThread(ap);
- conservationThread.start();
- }
-
- /**
- * DOCUMENT ME!
- */
- public void updateConsensus(final AlignmentPanel ap)
- {
- consensusThread = new ConsensusThread(ap);
- consensusThread.start();
- }
-
- class ConsensusThread
- extends Thread
- {
- AlignmentPanel ap;
- public ConsensusThread(AlignmentPanel ap)
- {
- this.ap = ap;
- }
-
- public void run()
- {
- updatingConsensus = true;
- while (UPDATING_CONSENSUS)
- {
- try
- {
- if (ap != null)
- {
- ap.paintAlignment(true);
- }
-
- Thread.sleep(200);
- }
- catch (Exception ex)
- {
- ex.printStackTrace();
- }
- }
-
- UPDATING_CONSENSUS = true;
-
- try
- {
- int aWidth = alignment.getWidth();
- if (aWidth < 0)
- {
- return;
- }
-
- consensus.annotations = null;
- consensus.annotations = new Annotation[aWidth];
-
- hconsensus = new Hashtable[aWidth];
- AAFrequency.calculate(alignment.getSequencesArray(),
- 0,
- alignment.getWidth(),
- hconsensus);
-
- for (int i = 0; i < aWidth; i++)
- {
- float value = 0;
- if (ignoreGapsInConsensusCalculation)
- {
- value = ( (Float) hconsensus[i].get(AAFrequency.PID_NOGAPS)).
- floatValue();
- }
- else
- {
- value = ( (Float) hconsensus[i].get(AAFrequency.PID_GAPS)).
- floatValue();
- }
-
- String maxRes = hconsensus[i].get(AAFrequency.MAXRESIDUE).toString();
- String mouseOver = hconsensus[i].get(AAFrequency.MAXRESIDUE) + " ";
-
- if (maxRes.length() > 1)
- {
- mouseOver = "[" + maxRes + "] ";
- maxRes = "+";
- }
-
- mouseOver += ( (int) value + "%");
- consensus.annotations[i] = new Annotation(maxRes, mouseOver, ' ',
- value);
- }
-
- if (globalColourScheme != null)
- {
- globalColourScheme.setConsensus(hconsensus);
- }
-
- }
- catch (OutOfMemoryError error)
- {
- alignment.deleteAnnotation(consensus);
-
- consensus = null;
- hconsensus = null;
- javax.swing.SwingUtilities.invokeLater(new Runnable()
- {
- public void run()
- {
- javax.swing.JOptionPane.showInternalMessageDialog(Desktop.desktop,
- "Out of memory calculating consensus!!"
- +
- "\nSee help files for increasing Java Virtual Machine memory."
- , "Out of memory",
- javax.swing.JOptionPane.WARNING_MESSAGE);
- }
- });
-
- System.out.println("Consensus calculation: " + error);
- System.gc();
- }
- UPDATING_CONSENSUS = false;
- updatingConsensus = false;
-
- if (ap != null)
- {
- ap.paintAlignment(true);
- }
- }