package jalview.workers;
import jalview.analysis.AAFrequency;
-import jalview.api.AlignCalcWorkerI;
import jalview.api.AlignViewportI;
import jalview.api.AlignmentViewPanel;
import jalview.datamodel.AlignmentAnnotation;
import jalview.datamodel.AlignmentI;
import jalview.datamodel.Annotation;
+import jalview.datamodel.ProfilesI;
import jalview.datamodel.SequenceI;
-import jalview.schemes.ColourSchemeI;
+import jalview.schemes.CollectionColourSchemeI;
-import java.util.Hashtable;
-
-public class ConsensusThread extends AlignCalcWorker implements
- AlignCalcWorkerI
+public class ConsensusThread extends AlignCalcWorker
{
public ConsensusThread(AlignViewportI alignViewport,
AlignmentViewPanel alignPanel)
}
} catch (OutOfMemoryError error)
{
- calcMan.workerCannotRun(this);
+ calcMan.disableWorker(this);
ap.raiseOOMWarning("calculating consensus", error);
} finally
{
*/
protected void computeConsensus(AlignmentI alignment)
{
- Hashtable[] hconsensus = new Hashtable[alignment.getWidth()];
SequenceI[] aseqs = getSequences();
- AAFrequency.calculate(aseqs, 0, alignment.getWidth(), hconsensus, true);
+ int width = alignment.getWidth();
+ ProfilesI hconsensus = AAFrequency.calculate(aseqs, width, 0,
+ width, true);
alignViewport.setSequenceConsensusHash(hconsensus);
setColourSchemeConsensus(hconsensus);
/**
* @param hconsensus
*/
- protected void setColourSchemeConsensus(Hashtable[] hconsensus)
+ protected void setColourSchemeConsensus(ProfilesI hconsensus)
{
- ColourSchemeI globalColourScheme = alignViewport
- .getGlobalColourScheme();
- if (globalColourScheme != null)
+ CollectionColourSchemeI cs = alignViewport.getViewportColourScheme();
+ if (cs != null)
{
- globalColourScheme.setConsensus(hconsensus);
+ cs.setConsensus(hconsensus);
}
}
public void updateResultAnnotation(boolean immediate)
{
AlignmentAnnotation consensus = getConsensusAnnotation();
- Hashtable[] hconsensus = getViewportConsensus();
+ ProfilesI hconsensus = (ProfilesI) getViewportConsensus();
if (immediate || !calcMan.isWorking(this) && consensus != null
&& hconsensus != null)
{
*
* @param consensusAnnotation
* the annotation to be populated
- * @param consensusData
+ * @param hconsensus
* the computed consensus data
*/
protected void deriveConsensus(AlignmentAnnotation consensusAnnotation,
- Hashtable[] consensusData)
+ ProfilesI hconsensus)
{
+
long nseq = getSequences().length;
- AAFrequency.completeConsensus(consensusAnnotation, consensusData, 0,
- consensusData.length, alignViewport.isIgnoreGapsConsensus(),
+ AAFrequency.completeConsensus(consensusAnnotation, hconsensus,
+ hconsensus.getStartColumn(),
+ hconsensus.getEndColumn() + 1,
+ alignViewport.isIgnoreGapsConsensus(),
alignViewport.isShowSequenceLogo(), nseq);
}
*
* @return
*/
- protected Hashtable[] getViewportConsensus()
+ protected Object getViewportConsensus()
{
+ // TODO convert ComplementConsensusThread to use Profile
return alignViewport.getSequenceConsensusHash();
}
}