X-Git-Url: http://source.jalview.org/gitweb/?a=blobdiff_plain;f=src%2Fjalview%2Fws%2Fjws1%2FJPredThread.java;h=79c39b4372b04039c097681e4faff8e2b09e4e43;hb=17e77c3f2949a0729322b4a8d907f3f34b6a9914;hp=6531bbf122e465d1f9bb3989ae7d564f36f854ab;hpb=47168f025aefdaa044802bd5f8f510ffe43a4808;p=jalview.git diff --git a/src/jalview/ws/jws1/JPredThread.java b/src/jalview/ws/jws1/JPredThread.java index 6531bbf..79c39b4 100644 --- a/src/jalview/ws/jws1/JPredThread.java +++ b/src/jalview/ws/jws1/JPredThread.java @@ -1,6 +1,6 @@ /* - * Jalview - A Sequence Alignment Editor and Viewer (Version 2.8.2) - * Copyright (C) 2014 The Jalview Authors + * Jalview - A Sequence Alignment Editor and Viewer (Version 2.9) + * Copyright (C) 2015 The Jalview Authors * * This file is part of Jalview. * @@ -20,17 +20,27 @@ */ package jalview.ws.jws1; -import java.util.*; - -import jalview.analysis.*; -import jalview.bin.*; -import jalview.datamodel.*; -import jalview.gui.*; -import jalview.io.*; -import jalview.util.*; +import jalview.analysis.AlignSeq; +import jalview.bin.Cache; +import jalview.datamodel.Alignment; +import jalview.datamodel.AlignmentAnnotation; +import jalview.datamodel.AlignmentI; +import jalview.datamodel.AlignmentView; +import jalview.datamodel.ColumnSelection; +import jalview.datamodel.SequenceI; +import jalview.gui.AlignFrame; +import jalview.gui.Desktop; +import jalview.gui.WebserviceInfo; +import jalview.io.FormatAdapter; +import jalview.util.Comparison; +import jalview.util.MessageManager; import jalview.ws.AWsJob; import jalview.ws.JobStateSummary; import jalview.ws.WSClientI; + +import java.util.Hashtable; +import java.util.List; + import vamsas.objects.simple.JpredResult; class JPredThread extends JWS1Thread implements WSClientI @@ -94,7 +104,7 @@ class JPredThread extends JWS1Thread implements WSClientI { return null; } - Alignment al = null; + AlignmentI al = null; ColumnSelection alcsel = null; int FirstSeq = -1; // the position of the query sequence in Alignment al @@ -137,24 +147,32 @@ class JPredThread extends JWS1Thread implements WSClientI { sqs[i] = al.getSequenceAt(i); } - if (!jalview.analysis.SeqsetUtils.deuniquify( - (Hashtable) SequenceInfo, sqs)) + if (!jalview.analysis.SeqsetUtils.deuniquify(SequenceInfo, sqs)) { throw (new Exception( - "Couldn't recover sequence properties for alignment.")); + MessageManager + .getString("exception.couldnt_recover_sequence_properties_for_alignment"))); } } FirstSeq = 0; - al.setDataset(null); + if (currentView.getDataset() != null) + { + al.setDataset(currentView.getDataset()); + } + else + { + al.setDataset(null); + } jalview.io.JnetAnnotationMaker.add_annotation(prediction, al, FirstSeq, false, predMap); } else { - throw (new Exception("Unknown format " + format - + " for file : \n" + result.getAligfile())); + throw (new Exception(MessageManager.formatMessage( + "exception.unknown_format_for_file", new String[] { + format, result.getAligfile() }))); } } else @@ -164,20 +182,21 @@ class JPredThread extends JWS1Thread implements WSClientI if (predMap != null) { char gc = getGapChar(); - SequenceI[] sqs = (SequenceI[]) ((java.lang.Object[]) input - .getAlignmentAndColumnSelection(gc))[0]; + SequenceI[] sqs = (SequenceI[]) input + .getAlignmentAndColumnSelection(gc)[0]; if (this.msaIndex >= sqs.length) { throw new Error( - "Implementation Error! Invalid msaIndex for JPredJob on parent MSA input object!"); + MessageManager + .getString("error.implementation_error_invalid_msa_index_for_job")); } // /// // Uses RemoveGapsCommand // /// - new jalview.commands.RemoveGapsCommand("Remove Gaps", - new SequenceI[] - { sqs[msaIndex] }, currentView); + new jalview.commands.RemoveGapsCommand( + MessageManager.getString("label.remove_gaps"), + new SequenceI[] { sqs[msaIndex] }, currentView); SequenceI profileseq = al.getSequenceAt(FirstSeq); profileseq.setSequence(sqs[msaIndex].getSequenceAsString()); @@ -187,11 +206,20 @@ class JPredThread extends JWS1Thread implements WSClientI al.getSequenceAt(FirstSeq), SequenceInfo)) { throw (new Exception( - "Couldn't recover sequence properties for JNet Query sequence!")); + MessageManager + .getString("exception.couldnt_recover_sequence_props_for_jnet_query"))); } else { - al.setDataset(null); + if (currentView.getDataset() != null) + { + al.setDataset(currentView.getDataset()); + + } + else + { + al.setDataset(null); + } jalview.io.JnetAnnotationMaker.add_annotation(prediction, al, FirstSeq, true, predMap); SequenceI profileseq = al.getSequenceAt(0); // this includes any gaps. @@ -205,8 +233,49 @@ class JPredThread extends JWS1Thread implements WSClientI } } } - return new Object[] - { al, alcsel }; // , FirstSeq, noMsa}; + // transfer to dataset + for (AlignmentAnnotation alant : al.getAlignmentAnnotation()) + { + if (alant.sequenceRef != null) + { + replaceAnnotationOnAlignmentWith(alant, alant.label, + "jalview.jws1.Jpred" + (this.msa == null ? "" : "MSA"), + alant.sequenceRef); + } + } + return new Object[] { al, alcsel }; // , FirstSeq, noMsa}; + } + + /** + * copied from JabawsCalcWorker + * + * @param newAnnot + * @param typeName + * @param calcId + * @param aSeq + */ + protected void replaceAnnotationOnAlignmentWith( + AlignmentAnnotation newAnnot, String typeName, String calcId, + SequenceI aSeq) + { + SequenceI dsseq = aSeq.getDatasetSequence(); + while (dsseq.getDatasetSequence() != null) + { + dsseq = dsseq.getDatasetSequence(); + } + // look for same annotation on dataset and lift this one over + List dsan = dsseq.getAlignmentAnnotations( + calcId, typeName); + if (dsan != null && dsan.size() > 0) + { + for (AlignmentAnnotation dssan : dsan) + { + dsseq.removeAlignmentAnnotation(dssan); + } + } + AlignmentAnnotation dssan = new AlignmentAnnotation(newAnnot); + dsseq.addAlignmentAnnotation(dssan); + dssan.adjustForAlignment(); } /** @@ -217,7 +286,7 @@ class JPredThread extends JWS1Thread implements WSClientI * @param al * @param profileseq */ - private void alignToProfileSeq(Alignment al, SequenceI profileseq) + private void alignToProfileSeq(AlignmentI al, SequenceI profileseq) { char gc = al.getGapCharacter(); int[] gapMap = profileseq.gapMap(); @@ -323,8 +392,7 @@ class JPredThread extends JWS1Thread implements WSClientI if (job.hasValidInput()) { OutputHeader = wsInfo.getProgressText(); - jobs = new WSJob[] - { job }; + jobs = new WSJob[] { job }; job.setJobnum(0); } else @@ -342,8 +410,7 @@ class JPredThread extends JWS1Thread implements WSClientI JPredJob job = new JPredJob(SequenceInfo, msf, delMap); if (job.hasValidInput()) { - jobs = new WSJob[] - { job }; + jobs = new WSJob[] { job }; OutputHeader = wsInfo.getProgressText(); job.setJobnum(0); } @@ -357,9 +424,9 @@ class JPredThread extends JWS1Thread implements WSClientI { if (!(j instanceof JPredJob)) { - throw new Error( - "Implementation error - StartJob(JpredJob) called on " - + j.getClass()); + throw new Error(MessageManager.formatMessage( + "error.implementation_error_startjob_called", + new String[] { j.getClass().toString() })); } try { @@ -378,9 +445,11 @@ class JPredThread extends JWS1Thread implements WSClientI { if (job.getJobId().startsWith("Broken")) { - job.result = (vamsas.objects.simple.Result) new JpredResult(); + job.result = new JpredResult(); job.result.setInvalid(true); - job.result.setStatus("Submission " + job.getJobId()); + job.result.setStatus(MessageManager.formatMessage( + "label.submission_params", new String[] { job.getJobId() + .toString() })); throw new Exception(job.getJobId()); } else @@ -392,7 +461,9 @@ class JPredThread extends JWS1Thread implements WSClientI } else { - throw new Exception("Server timed out - try again later\n"); + throw new Exception( + MessageManager + .getString("exception.server_timeout_try_later")); } } catch (Exception e) { @@ -416,9 +487,11 @@ class JPredThread extends JWS1Thread implements WSClientI { wsInfo.setStatus(j.getJobnum(), WebserviceInfo.STATE_STOPPED_ERROR); // JBPNote - this could be a popup informing the user of the problem. - wsInfo.appendProgressText(j.getJobnum(), - "Failed to submit the prediction:\n" + e.getMessage() - + wsInfo.getProgressText()); + wsInfo.appendProgressText(j.getJobnum(), MessageManager + .formatMessage( + "info.failed_to_submit_prediction", + new String[] { e.getMessage(), + wsInfo.getProgressText() })); jalview.bin.Cache.log.debug( "Failed Submission of job " + j.getJobnum(), e); @@ -509,7 +582,8 @@ class JPredThread extends JWS1Thread implements WSClientI { // do merge with other job results throw new Error( - "Multiple JNet subjob merging not yet implemented."); + MessageManager + .getString("error.multiple_jnet_subjob_merge_not_implemented")); } } catch (Exception e) { @@ -517,9 +591,10 @@ class JPredThread extends JWS1Thread implements WSClientI "JNet Client: JPred Annotation Parse Error", e); wsInfo.setStatus(j.getJobnum(), WebserviceInfo.STATE_STOPPED_ERROR); - wsInfo.appendProgressText(j.getJobnum(), OutputHeader + "\n" - + j.result.getStatus() - + "\nInvalid JNet job result data!\n" + e.getMessage()); + wsInfo.appendProgressText(j.getJobnum(), MessageManager + .formatMessage("info.invalid_jnet_job_result_data", + new String[] { OutputHeader.toString(), + j.result.getStatus(), e.getMessage() })); j.result.setBroken(true); } } @@ -530,6 +605,8 @@ class JPredThread extends JWS1Thread implements WSClientI if (newWindow) { AlignFrame af; + ((AlignmentI) res[0]).setSeqrep(((AlignmentI) res[0]) + .getSequenceAt(0)); if (input == null) { if (res[1] != null) @@ -587,7 +664,7 @@ class JPredThread extends JWS1Thread implements WSClientI public void cancelJob() { - throw new Error("Implementation error!"); + throw new Error(MessageManager.getString("error.implementation_error")); } public boolean canMergeResults()