update author list in license for (JAL-826)
[jalview.git] / src / jalview / gui / ConservationThread.java
1 /*
2  * Jalview - A Sequence Alignment Editor and Viewer (Version 2.7)
3  * Copyright (C) 2011 J Procter, AM Waterhouse, J Engelhardt, LM Lui, G Barton, M Clamp, S Searle
4  * 
5  * This file is part of Jalview.
6  * 
7  * Jalview is free software: you can redistribute it and/or
8  * modify it under the terms of the GNU General Public License 
9  * as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.
10  * 
11  * Jalview is distributed in the hope that it will be useful, but 
12  * WITHOUT ANY WARRANTY; without even the implied warranty 
13  * of MERCHANTABILITY or FITNESS FOR A PARTICULAR 
14  * PURPOSE.  See the GNU General Public License for more details.
15  * 
16  * You should have received a copy of the GNU General Public License along with Jalview.  If not, see <http://www.gnu.org/licenses/>.
17  */
18 package jalview.gui;
19
20 import jalview.analysis.Conservation;
21 import jalview.datamodel.Annotation;
22
23 import java.awt.Color;
24
25 class ConservationThread extends Thread
26 {
27   /**
28    * 
29    */
30   private AlignViewport alignViewport;
31
32   AlignmentPanel ap;
33
34   public ConservationThread(AlignViewport alignViewport, AlignmentPanel ap)
35   {
36     this.alignViewport = alignViewport;
37     this.ap = ap;
38   }
39
40   public void run()
41   {
42     try
43     {
44       this.alignViewport.updatingConservation = true;
45
46       while (AlignViewport.UPDATING_CONSERVATION)
47       {
48         try
49         {
50           if (ap != null)
51           {
52             ap.paintAlignment(false);
53           }
54           Thread.sleep(200);
55         } catch (Exception ex)
56         {
57           ex.printStackTrace();
58         }
59       }
60
61       AlignViewport.UPDATING_CONSERVATION = true;
62
63       int alWidth;
64       
65       if (alignViewport==null || alignViewport.alignment==null || (alWidth=alignViewport.alignment.getWidth())< 0)
66       {
67         this.alignViewport.updatingConservation = false;
68         AlignViewport.UPDATING_CONSERVATION = false;
69         return;
70       }
71
72       Conservation cons = new jalview.analysis.Conservation("All",
73               jalview.schemes.ResidueProperties.propHash, 3,
74               this.alignViewport.alignment.getSequences(), 0, alWidth - 1);
75
76       cons.calculate();
77       cons.verdict(false, this.alignViewport.ConsPercGaps);
78
79       if (this.alignViewport.quality != null)
80       {
81         cons.findQuality();
82       }
83       cons.completeAnnotations(alignViewport.conservation,
84               alignViewport.quality, 0, alWidth);
85     } catch (OutOfMemoryError error)
86     {
87       new OOMWarning("calculating conservation", error);
88
89       this.alignViewport.conservation = null;
90       this.alignViewport.quality = null;
91
92     }
93
94     AlignViewport.UPDATING_CONSERVATION = false;
95     this.alignViewport.updatingConservation = false;
96
97     if (ap != null)
98     {
99       ap.paintAlignment(true);
100     }
101
102   }
103 }