/*
* Jalview - A Sequence Alignment Editor and Viewer (Version 2.7)
* Copyright (C) 2011 J Procter, AM Waterhouse, J Engelhardt, LM Lui, G Barton, M Clamp, S Searle
- *
+ *
* 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
+ * 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
+ *
+ * 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/>.
*/
package jalview.workers;
{
private int ConsPercGaps = 25; // JBPNote : This should be a configurable property!
-
+
public ConservationThread(AlignViewportI alignViewport, AlignmentViewPanel alignPanel)
{
super(alignViewport, alignPanel);
ConsPercGaps = alignViewport.getConsPercGaps();
}
-
+
private Conservation cons;
AlignmentAnnotation conservation,quality;
int alWidth;
+ @Override
public void run()
{
try
{
calcMan.notifyStart(this); // updatingConservation = true;
- while (!calcMan.notifyWorking(this))
+ while (!calcMan.notifyWorking(this))
{
try
{
if (ap != null)
{
- ap.paintAlignment(false);
+ // ap.paintAlignment(false);
}
Thread.sleep(200);
} catch (Exception ex)
ourAnnot.add(conservation);
ourAnnot.add(quality);
ourAnnots = ourAnnot;
-
+
// AlignViewport.UPDATING_CONSERVATION = true;
-
+
if (alignment==null || (alWidth=alignment.getWidth())< 0)
{
calcMan.workerComplete(this);
//.updatingConservation = false;
//AlignViewport.UPDATING_CONSERVATION = false;
-
+
return;
}
-
+ try {
cons = Conservation.calculateConservation("All",
jalview.schemes.ResidueProperties.propHash, 3,
alignment.getSequences(), 0, alWidth - 1, false, ConsPercGaps, quality!=null);
+ } catch (IndexOutOfBoundsException x)
+ {
+ // probable race condition. just finish and return without any fuss.
+ calcMan.workerComplete(this);
+ return;
+ }
updateResultAnnotation(true);
} catch (OutOfMemoryError error)
{
public void updateAnnotation()
{
updateResultAnnotation(false);
-
+
}
}