Clover icon

jalviewX

  1. Project Clover database Wed Oct 31 2018 15:13:58 GMT
  2. Package jalview.ws.jws2

File JabawsCalcWorker.java

 

Coverage histogram

../../../img/srcFileCovDistChart0.png
56% of files have more coverage

Code metrics

24
65
12
1
235
187
28
0.43
5.42
12
2.33

Classes

Class Line # Actions
JabawsCalcWorker 44 65 28 101
0.00%
 

Contributing tests

No tests hitting this source file were found.

Source view

1    /*
2    * Jalview - A Sequence Alignment Editor and Viewer ($$Version-Rel$$)
3    * Copyright (C) $$Year-Rel$$ The Jalview Authors
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
10    * of the License, or (at your option) any later version.
11    *
12    * Jalview is distributed in the hope that it will be useful, but
13    * WITHOUT ANY WARRANTY; without even the implied warranty
14    * of MERCHANTABILITY or FITNESS FOR A PARTICULAR
15    * PURPOSE. See the GNU General Public License for more details.
16    *
17    * You should have received a copy of the GNU General Public License
18    * along with Jalview. If not, see <http://www.gnu.org/licenses/>.
19    * The Jalview Authors are detailed in the 'AUTHORS' file.
20    */
21    package jalview.ws.jws2;
22   
23    import jalview.datamodel.AlignmentAnnotation;
24    import jalview.datamodel.Annotation;
25    import jalview.datamodel.SequenceI;
26    import jalview.gui.AlignFrame;
27    import jalview.util.MessageManager;
28    import jalview.ws.jws2.jabaws2.Jws2Instance;
29    import jalview.ws.params.WsParamSetI;
30   
31    import java.util.Iterator;
32    import java.util.List;
33   
34    import compbio.data.msa.SequenceAnnotation;
35    import compbio.data.sequence.Score;
36    import compbio.data.sequence.ScoreManager;
37    import compbio.metadata.Argument;
38    import compbio.metadata.ChunkHolder;
39    import compbio.metadata.JobStatus;
40    import compbio.metadata.JobSubmissionException;
41    import compbio.metadata.ResultNotAvailableException;
42    import compbio.metadata.WrongParameterException;
43   
 
44    public abstract class JabawsCalcWorker extends AbstractJabaCalcWorker
45    {
46   
47    @SuppressWarnings("unchecked")
48    protected SequenceAnnotation aaservice;
49   
50    protected ScoreManager scoremanager;
51   
 
52  0 toggle public JabawsCalcWorker(Jws2Instance service, AlignFrame alignFrame,
53    WsParamSetI preset, List<Argument> paramset)
54    {
55  0 super(service, alignFrame, preset, paramset);
56  0 aaservice = (SequenceAnnotation) service.service;
57    }
58   
 
59  0 toggle @Override
60    ChunkHolder pullExecStatistics(String rslt, long rpos)
61    {
62  0 return aaservice.pullExecStatistics(rslt, rpos);
63    }
64   
 
65  0 toggle @Override
66    boolean collectAnnotationResultsFor(String rslt)
67    throws ResultNotAvailableException
68    {
69  0 scoremanager = aaservice.getAnnotation(rslt);
70  0 if (scoremanager != null)
71    {
72  0 return true;
73    }
74  0 return false;
75    }
76   
 
77  0 toggle @Override
78    boolean cancelJob(String rslt) throws Exception
79    {
80  0 return aaservice.cancelJob(rslt);
81    }
82   
 
83  0 toggle @Override
84    protected JobStatus getJobStatus(String rslt) throws Exception
85    {
86  0 return aaservice.getJobStatus(rslt);
87    }
88   
 
89  0 toggle @Override
90    boolean hasService()
91    {
92  0 return aaservice != null;
93    }
94   
 
95  0 toggle @Override
96    protected boolean isInteractiveUpdate()
97    {
98  0 return this instanceof AAConClient;
99    }
100   
 
101  0 toggle @Override
102    protected String submitToService(
103    List<compbio.data.sequence.FastaSequence> seqs)
104    throws JobSubmissionException
105    {
106  0 String rslt;
107  0 if (preset == null && arguments == null)
108    {
109  0 rslt = aaservice.analize(seqs);
110    }
111    else
112    {
113  0 try
114    {
115  0 rslt = aaservice.customAnalize(seqs, getJabaArguments());
116    } catch (WrongParameterException x)
117    {
118  0 throw new JobSubmissionException(MessageManager.getString(
119    "exception.jobsubmission_invalid_params_set"), x);
120   
121    }
122    }
123  0 return rslt;
124    }
125   
 
126  0 toggle protected void createAnnotationRowsForScores(
127    List<AlignmentAnnotation> ourAnnot, String calcId, int alWidth,
128    Score scr)
129    {
130    // simple annotation row
131  0 AlignmentAnnotation annotation = alignViewport.getAlignment()
132    .findOrCreateAnnotation(scr.getMethod(), calcId, true, null,
133    null);
134  0 if (alWidth == gapMap.length) // scr.getScores().size())
135    {
136  0 constructAnnotationFromScore(annotation, 0, alWidth, scr);
137  0 ourAnnot.add(annotation);
138    }
139    }
140   
 
141  0 toggle protected AlignmentAnnotation createAnnotationRowsForScores(
142    List<AlignmentAnnotation> ourAnnot, String typeName,
143    String calcId, SequenceI dseq, int base, Score scr)
144    {
145  0 System.out.println("Creating annotation on dseq:" + dseq.getStart()
146    + " base is " + base + " and length=" + dseq.getLength()
147    + " == " + scr.getScores().size());
148    // AlignmentAnnotation annotation = new AlignmentAnnotation(
149    // scr.getMethod(), typeName, new Annotation[]
150    // {}, 0, -1, AlignmentAnnotation.LINE_GRAPH);
151    // annotation.setCalcId(calcId);
152  0 AlignmentAnnotation annotation = alignViewport.getAlignment()
153    .findOrCreateAnnotation(typeName, calcId, false, dseq, null);
154  0 constructAnnotationFromScore(annotation, 0, dseq.getLength(), scr);
155  0 annotation.createSequenceMapping(dseq, base, false);
156  0 annotation.adjustForAlignment();
157  0 dseq.addAlignmentAnnotation(annotation);
158  0 ourAnnot.add(annotation);
159  0 return annotation;
160    }
161   
 
162  0 toggle protected void replaceAnnotationOnAlignmentWith(
163    AlignmentAnnotation newAnnot, String typeName, String calcId,
164    SequenceI aSeq)
165    {
166  0 SequenceI dsseq = aSeq.getDatasetSequence();
167  0 while (dsseq.getDatasetSequence() != null)
168    {
169  0 dsseq = dsseq.getDatasetSequence();
170    }
171    // look for same annotation on dataset and lift this one over
172  0 List<AlignmentAnnotation> dsan = dsseq.getAlignmentAnnotations(calcId,
173    typeName);
174  0 if (dsan != null && dsan.size() > 0)
175    {
176  0 for (AlignmentAnnotation dssan : dsan)
177    {
178  0 dsseq.removeAlignmentAnnotation(dssan);
179    }
180    }
181  0 AlignmentAnnotation dssan = new AlignmentAnnotation(newAnnot);
182  0 dsseq.addAlignmentAnnotation(dssan);
183  0 dssan.adjustForAlignment();
184    }
185   
 
186  0 toggle private void constructAnnotationFromScore(AlignmentAnnotation annotation,
187    int base, int alWidth, Score scr)
188    {
189  0 Annotation[] elm = new Annotation[alWidth];
190  0 Iterator<Float> vals = scr.getScores().iterator();
191  0 float m = 0f, x = 0f;
192  0 for (int i = 0; vals.hasNext(); i++)
193    {
194  0 float val = vals.next().floatValue();
195  0 if (i == 0)
196    {
197  0 m = val;
198  0 x = val;
199    }
200    else
201    {
202  0 if (m > val)
203    {
204  0 m = val;
205    }
206  0 ;
207  0 if (x < val)
208    {
209  0 x = val;
210    }
211    }
212    // if we're at a gapped column then skip to next ungapped position
213  0 if (gapMap != null && gapMap.length > 0)
214    {
215  0 while (!gapMap[i])
216    {
217  0 elm[i++] = new Annotation("", "", ' ', Float.NaN);
218    }
219    }
220  0 elm[i] = new Annotation("", "" + val, ' ', val);
221    }
222   
223  0 annotation.annotations = elm;
224  0 annotation.belowAlignment = true;
225  0 if (x < 0)
226    {
227  0 x = 0;
228    }
229  0 x += (x - m) * 0.1;
230  0 annotation.graphMax = x;
231  0 annotation.graphMin = m;
232  0 annotation.validateRangeAndDisplay();
233    }
234   
235    }