X-Git-Url: http://source.jalview.org/gitweb/?a=blobdiff_plain;f=src%2Fjalview%2Fws%2Fjws2%2FJabawsAlignCalcWorker.java;h=926256d5542376f03600da909a5f2ee1f23be999;hb=51f4e1c750d0de8937e69788f7b14c6120fd310f;hp=58cb3acd29cc4f81b0e233d73984bdf8355a1897;hpb=6d981e3a3cac0e7f487d2b3d40e45cfd6ca8435c;p=jalview.git diff --git a/src/jalview/ws/jws2/JabawsAlignCalcWorker.java b/src/jalview/ws/jws2/JabawsAlignCalcWorker.java index 58cb3ac..926256d 100644 --- a/src/jalview/ws/jws2/JabawsAlignCalcWorker.java +++ b/src/jalview/ws/jws2/JabawsAlignCalcWorker.java @@ -1,14 +1,30 @@ +/* + * Jalview - A Sequence Alignment Editor and Viewer (Version 2.8) + * Copyright (C) 2012 J Procter, AM Waterhouse, LM Lui, J Engelhardt, 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 + * 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 . + */ package jalview.ws.jws2; import jalview.analysis.AlignSeq; import jalview.analysis.SeqsetUtils; import jalview.api.AlignViewportI; import jalview.api.AlignmentViewPanel; -import jalview.bin.Cache; import jalview.datamodel.AlignmentAnnotation; import jalview.datamodel.AlignmentI; +import jalview.datamodel.AnnotatedCollectionI; import jalview.datamodel.Annotation; -import jalview.datamodel.SequenceFeature; import jalview.datamodel.SequenceI; import jalview.gui.AlignFrame; import jalview.gui.IProgressIndicator; @@ -17,15 +33,12 @@ import jalview.ws.jws2.dm.JabaWsParamSet; import jalview.ws.jws2.jabaws2.Jws2Instance; import jalview.ws.params.WsParamSetI; -import java.awt.Color; import java.util.ArrayList; import java.util.HashMap; import java.util.Iterator; import java.util.List; import java.util.Map; -import com.sun.xml.internal.ws.client.ClientTransportException; - import compbio.data.msa.SequenceAnnotation; import compbio.data.sequence.FastaSequence; import compbio.data.sequence.Score; @@ -82,7 +95,7 @@ public abstract class JabawsAlignCalcWorker extends AlignCalcWorker } /** - * reconfigure and restart the AAConsClient. This method will spawn a new + * reconfigure and restart the AAConClient. This method will spawn a new * thread that will wait until any current jobs are finished, modify the * parameters and restart the conservation calculation with the new values. * @@ -137,7 +150,7 @@ public abstract class JabawsAlignCalcWorker extends AlignCalcWorker return; } List seqs = getInputSequences(alignViewport - .getAlignment()); + .getAlignment(), bySequence ? alignViewport.getSelectionGroup() : null); if (seqs == null) { @@ -164,7 +177,7 @@ public abstract class JabawsAlignCalcWorker extends AlignCalcWorker } catch (WrongParameterException x) { throw new JobSubmissionException( - "Invalid paremeter set. Check Jalview implementation.", x); + "Invalid parameter set. Check Jalview implementation.", x); } } @@ -177,7 +190,7 @@ public abstract class JabawsAlignCalcWorker extends AlignCalcWorker { finished = true; } - if (calcMan.isPending(this) && this instanceof AAConsClient) + if (calcMan.isPending(this) && this instanceof AAConClient) { finished = true; // cancel this job and yield to the new job @@ -189,7 +202,7 @@ public abstract class JabawsAlignCalcWorker extends AlignCalcWorker } else { - System.err.println("FAILED TO CANCELL AACon job: " + rslt); + System.err.println("FAILED TO CANCEL AACon job: " + rslt); } } catch (Exception x) @@ -210,7 +223,7 @@ public abstract class JabawsAlignCalcWorker extends AlignCalcWorker try { stats = aaservice.pullExecStatistics(rslt, rpos); - } catch (Exception x) + } catch (Exception x) { if (x.getMessage().contains( @@ -227,10 +240,16 @@ public abstract class JabawsAlignCalcWorker extends AlignCalcWorker if (--serverErrorsLeft > 0) { retry = true; - try { + try + { Thread.sleep(200); - } catch (InterruptedException q) {}; - } else { + } catch (InterruptedException q) + { + } + ; + } + else + { throw x; } } @@ -255,7 +274,7 @@ public abstract class JabawsAlignCalcWorker extends AlignCalcWorker ; } } while (!finished); - if (serverErrorsLeft>0) + if (serverErrorsLeft > 0) { try { @@ -271,6 +290,7 @@ public abstract class JabawsAlignCalcWorker extends AlignCalcWorker .debug("Updating result annotation from Job " + rslt + " at " + service.getUri()); updateResultAnnotation(true); + ap.adjustAnnotationHeight(); } } } @@ -360,8 +380,10 @@ public abstract class JabawsAlignCalcWorker extends AlignCalcWorker boolean[] gapMap; int realw; + + int start,end; - public List getInputSequences(AlignmentI alignment) + public List getInputSequences(AlignmentI alignment, AnnotatedCollectionI inputSeqs) { if (alignment == null || alignment.getWidth() <= 0 || alignment.getSequences() == null @@ -371,6 +393,11 @@ public abstract class JabawsAlignCalcWorker extends AlignCalcWorker { return null; } + if (inputSeqs==null || inputSeqs.getWidth()<=0 || inputSeqs.getSequences()==null || inputSeqs.getSequences().size()<1) + { + inputSeqs = alignment; + } + List seqs = new ArrayList(); int minlen = 10; @@ -380,9 +407,12 @@ public abstract class JabawsAlignCalcWorker extends AlignCalcWorker seqNames = new HashMap(); } gapMap = new boolean[0]; - for (SequenceI sq : ((List) alignment.getSequences())) + start=inputSeqs.getStartRes(); + end=inputSeqs.getEndRes(); + + for (SequenceI sq : (List) inputSeqs.getSequences()) { - if (sq.getEnd() - sq.getStart() > minlen - 1) + if (sq.findPosition(end+1) -sq.findPosition(start+1) > minlen - 1) { String newname = SeqsetUtils.unique_name(seqs.size() + 1); // make new input sequence with or without gaps @@ -414,7 +444,7 @@ public abstract class JabawsAlignCalcWorker extends AlignCalcWorker { seqs.add(seq = new compbio.data.sequence.FastaSequence(newname, AlignSeq.extractGaps(jalview.util.Comparison.GapChars, - sq.getSequenceAsString()))); + sq.getSequenceAsString(start,end+1)))); } if (seq.getSequence().length() > ln) { @@ -433,8 +463,8 @@ public abstract class JabawsAlignCalcWorker extends AlignCalcWorker } } // try real hard to return something submittable - // TODO: some of AAcons measures need a minimum of two or three amino - // acids at each position, and aacons doesn't gracefully degrade. + // TODO: some of AAcon measures need a minimum of two or three amino + // acids at each position, and AAcon doesn't gracefully degrade. for (int p = 0; p < seqs.size(); p++) { FastaSequence sq = seqs.get(p); @@ -528,8 +558,8 @@ public abstract class JabawsAlignCalcWorker extends AlignCalcWorker // annotation.setCalcId(calcId); AlignmentAnnotation annotation = alignViewport.getAlignment() .findOrCreateAnnotation(typeName, calcId, false, dseq, null); - constructAnnotationFromScore(annotation, base, dseq.getLength(), scr); - annotation.createSequenceMapping(dseq, dseq.findPosition(base), false); + constructAnnotationFromScore(annotation, 0, dseq.getLength(), scr); + annotation.createSequenceMapping(dseq, base, false); annotation.adjustForAlignment(); dseq.addAlignmentAnnotation(annotation); ourAnnot.add(annotation); @@ -542,7 +572,7 @@ public abstract class JabawsAlignCalcWorker extends AlignCalcWorker Annotation[] elm = new Annotation[alWidth]; Iterator vals = scr.getScores().iterator(); float m = 0f, x = 0f; - for (int i = base; vals.hasNext(); i++) + for (int i = 0; vals.hasNext(); i++) { float val = vals.next().floatValue(); if (i == 0)