/*
- * Jalview - A Sequence Alignment Editor and Viewer (Version 2.8)
- * Copyright (C) 2012 J Procter, AM Waterhouse, LM Lui, J Engelhardt, G Barton, M Clamp, S Searle
+ * Jalview - A Sequence Alignment Editor and Viewer (Version 2.8.1)
+ * Copyright (C) 2014 The Jalview Authors
*
* This file is part of Jalview.
*
* PURPOSE. See the GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License along with Jalview. If not, see <http://www.gnu.org/licenses/>.
+ * The Jalview Authors are detailed in the 'AUTHORS' file.
*/
package jalview.viewmodel;
import jalview.workers.ConsensusThread;
import jalview.workers.StrucConsensusThread;
+import java.awt.Color;
import java.util.ArrayList;
import java.util.BitSet;
import java.util.Hashtable;
// calculation till later or to do all calculations in thread.
// via changecolour
globalColourScheme = cs;
+ boolean recalc=false;
+ if (cs!=null)
+ {
+ cs.setConservationApplied(recalc = getConservationSelected());
+ if (getAbovePIDThreshold() || cs instanceof PIDColourScheme || cs instanceof Blosum62ColourScheme)
+ {
+ recalc = true;
+ cs.setThreshold(threshold, ignoreGapsInConsensusCalculation);
+ } else {
+ cs.setThreshold(0, ignoreGapsInConsensusCalculation);
+ }
+ if (recalc)
+ {
+ cs.setConsensus(hconsensus);
+ cs.setConservation(hconservation);
+ }
+ cs.alignmentChanged(alignment, hiddenRepSequences);
+ }
if (getColourAppliesToAllGroups())
{
for (SequenceGroup sg : getAlignment().getGroups())
sg.cs = null;
continue;
}
- if (cs instanceof ClustalxColourScheme)
- {
- sg.cs = new ClustalxColourScheme(sg, getHiddenRepSequences());
- }
- else
- {
- try
- {
- sg.cs = cs.getClass().newInstance();
- } catch (Exception ex)
- {
- ex.printStackTrace();
- sg.cs = cs;
- }
- }
-
+ sg.cs = cs.applyTo(sg, getHiddenRepSequences());
+ sg.setConsPercGaps(ConsPercGaps);
if (getAbovePIDThreshold() || cs instanceof PIDColourScheme
|| cs instanceof Blosum62ColourScheme)
{
sg.cs.setThreshold(threshold, getIgnoreGapsConsensus());
- sg.cs.setConsensus(AAFrequency.calculate(
- sg.getSequences(getHiddenRepSequences()), 0,
- sg.getWidth()));
+ recalc=true;
}
else
{
if (getConservationSelected())
{
- Conservation c = new Conservation("Group",
- ResidueProperties.propHash, 3,
- sg.getSequences(getHiddenRepSequences()), 0,
- getAlignment().getWidth() - 1);
- c.calculate();
- c.verdict(false, getConsPercGaps());
- sg.cs.setConservation(c);
+ sg.cs.setConservationApplied(true);
+ recalc=true;
}
else
{
sg.cs.setConservation(null);
- sg.cs.setThreshold(0, getIgnoreGapsConsensus());
+ // sg.cs.setThreshold(0, getIgnoreGapsConsensus());
+ }
+ if (recalc) {
+ sg.recalcConservation();
+ } else {
+ sg.cs.alignmentChanged(sg, hiddenRepSequences);
}
-
}
}
* view
*/
protected Hashtable[] hStrucConsensus = null;
-
+
+ protected Conservation hconservation = null;
+ @Override
+ public void setConservation(Conservation cons)
+ {
+ hconservation = cons;
+ }
/**
* percentage gaps allowed in a column before all amino acid properties should
* be considered unconserved
protected boolean showConsensus = true;
+ Hashtable sequenceColours;
+
/**
* Property change listener for changes in alignment
*
ColourSchemeI cs = globalColourScheme;
if (cs != null)
{
- cs.alignmentChanged(alignment, null);
+ cs.alignmentChanged(alignment, hiddenRepSequences);
cs.setConsensus(hconsensus);
if (cs.conservationApplied())
if (aan[an].autoCalculated && aan[an].groupRef != null)
{
oldrfs.add(aan[an].groupRef);
- alignment.deleteAnnotation(aan[an]);
- aan[an] = null;
+ alignment.deleteAnnotation(aan[an],false);
}
}
}
oldrfs.clear();
}
+ @Override
+ public Color getSequenceColour(SequenceI seq)
+ {
+ Color sqc=Color.white;
+ if (sequenceColours != null)
+ {
+ sqc = (Color) sequenceColours.get(seq);
+ if (sqc == null) {
+ sqc = Color.white;
+ }
+ }
+ return sqc;
+ }
+
+ @Override
+ public void setSequenceColour(SequenceI seq, Color col)
+ {
+ if (sequenceColours == null)
+ {
+ sequenceColours = new Hashtable();
+ }
+
+ if (col == null)
+ {
+ sequenceColours.remove(seq);
+ }
+ else
+ {
+ sequenceColours.put(seq, col);
+ }
+ }
+
+ @Override
+ public void updateSequenceIdColours()
+ {
+ if (sequenceColours == null)
+ {
+ sequenceColours = new Hashtable();
+ }
+ for (SequenceGroup sg : alignment.getGroups())
+ {
+ if (sg.idColour != null)
+ {
+ for (SequenceI s : sg.getSequences(getHiddenRepSequences()))
+ {
+ sequenceColours.put(s, sg.idColour);
+ }
+ }
+ }
+ }
+
+ @Override
+ public void clearSequenceColours()
+ {
+ sequenceColours = null;
+ };
}