+/*
+ * Jalview - A Sequence Alignment Editor and Viewer (Version 2.8.2b1)
+ * Copyright (C) 2014 The Jalview Authors
+ *
+ * This file is part of Jalview.
+ *
+ * Jalview is free software: you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation, either version 3
+ * of the License, or (at your option) any later version.
+ *
+ * Jalview is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty
+ * of MERCHANTABILITY or FITNESS FOR A PARTICULAR
+ * 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.workers;
import jalview.analysis.AAFrequency;
import jalview.datamodel.AlignmentAnnotation;
import jalview.datamodel.AlignmentI;
import jalview.datamodel.Annotation;
+import jalview.datamodel.SequenceI;
import jalview.schemes.ColourSchemeI;
import java.util.Hashtable;
-public class ConsensusThread extends AlignCalcWorker implements AlignCalcWorkerI
+public class ConsensusThread extends AlignCalcWorker implements
+ AlignCalcWorkerI
{
+ private long nseq = -1;
+
public ConsensusThread(AlignViewportI alignViewport,
AlignmentViewPanel alignPanel)
{
return;
}
calcMan.notifyStart(this);
- long started=System.currentTimeMillis();
+ long started = System.currentTimeMillis();
try
{
- AlignmentAnnotation consensus = alignViewport.getAlignmentConsensusAnnotation();
- if (consensus==null || calcMan.isPending(this)) {
+ AlignmentAnnotation consensus = alignViewport
+ .getAlignmentConsensusAnnotation();
+ if (consensus == null || calcMan.isPending(this))
+ {
calcMan.workerComplete(this);
return;
}
{
if (ap != null)
{
- ap.paintAlignment(false);
+ ap.paintAlignment(false);
}
Thread.sleep(200);
} catch (Exception ex)
if (alignViewport.isClosed())
{
abortAndDestroy();
+ return;
}
AlignmentI alignment = alignViewport.getAlignment();
return;
}
- consensus = alignViewport
- .getAlignmentConsensusAnnotation();
+ consensus = alignViewport.getAlignmentConsensusAnnotation();
consensus.annotations = null;
consensus.annotations = new Annotation[aWidth];
Hashtable[] hconsensus = alignViewport.getSequenceConsensusHash();
hconsensus = new Hashtable[aWidth];
- try {
- AAFrequency.calculate(alignment.getSequencesArray(), 0,
- alignment.getWidth(), hconsensus, true);
- } catch (ArrayIndexOutOfBoundsException x){
+ try
+ {
+ SequenceI aseqs[] = alignment.getSequencesArray();
+ nseq = aseqs.length;
+ AAFrequency.calculate(aseqs, 0, alignment.getWidth(), hconsensus,
+ true);
+ } catch (ArrayIndexOutOfBoundsException x)
+ {
// this happens due to a race condition -
// alignment was edited at same time as calculation was running
//
-// calcMan.workerCannotRun(this);
+ // calcMan.workerCannotRun(this);
calcMan.workerComplete(this);
return;
}
AlignmentAnnotation consensus = alignViewport
.getAlignmentConsensusAnnotation();
Hashtable[] hconsensus = alignViewport.getSequenceConsensusHash();
- if (immediate || !calcMan.isWorking(this) && consensus!=null && hconsensus!=null)
+ if (immediate || !calcMan.isWorking(this) && consensus != null
+ && hconsensus != null)
{
AAFrequency.completeConsensus(consensus, hconsensus, 0,
- hconsensus.length, alignViewport.getIgnoreGapsConsensus(),
- alignViewport.isShowSequenceLogo());
+ hconsensus.length, alignViewport.getIgnoreGapsConsensus(),
+ alignViewport.isShowSequenceLogo(), nseq);
}
}
}