X-Git-Url: http://source.jalview.org/gitweb/?a=blobdiff_plain;ds=sidebyside;f=src%2Fjalview%2Fws%2FJPredClient.java;h=65f03253c61d59314c0f655640090c586714303f;hb=0149a3aec3e61c36ee788adfbd53bf560407e1e0;hp=e6f3899892a6058fff4b0021eb61e9528582b67f;hpb=efc31b4a8d5cee63555586804a2b79c06bdb5a14;p=jalview.git diff --git a/src/jalview/ws/JPredClient.java b/src/jalview/ws/JPredClient.java index e6f3899..65f0325 100755 --- a/src/jalview/ws/JPredClient.java +++ b/src/jalview/ws/JPredClient.java @@ -30,13 +30,30 @@ import jalview.gui.*; public class JPredClient extends WSClient { - ext.vamsas.JPredWS server; + ext.vamsas.Jpred server; String altitle = ""; java.util.Hashtable SequenceInfo = null; + public JPredClient(ext.vamsas.ServiceHandle sh, String title, SequenceI seq) { + wsInfo = setWebService(sh); + startJPredClient(title, seq); + } + public JPredClient(ext.vamsas.ServiceHandle sh, String title, SequenceI[] msa) { + wsInfo = setWebService(sh); + startJPredClient(title, msa); + } + + public JPredClient(String title, SequenceI[] msf) { + startJPredClient(title, msf); + } - public JPredClient(String title, SequenceI[] msf) + public JPredClient(String title, SequenceI seq) { + startJPredClient(title, seq); + } + + private void startJPredClient(String title, SequenceI[] msf) { - wsInfo = setWebService(); + if (wsInfo==null) + wsInfo = setWebService(); SequenceI seq = msf[0]; altitle = "JNet prediction on " + seq.getName() + @@ -46,21 +63,24 @@ public class JPredClient title + ") on sequence :\n>" + seq.getName() + "\n" + AlignSeq.extractGaps("-. ", seq.getSequence()) + "\n"); - - SequenceInfo = jalview.analysis.SeqsetUtils.SeqCharacterHash(seq); + SequenceI aln[] = new SequenceI[msf.length]; + for (int i=0,j=msf.length; i" + seq.getName() + "\n" + AlignSeq.extractGaps("-. ", seq.getSequence()) + @@ -97,7 +117,7 @@ public class JPredClient private boolean locateWebService() { - JPredWSServiceLocator loc = new JPredWSServiceLocator(); // Default + ext.vamsas.JpredServiceLocator loc = new JpredServiceLocator(); // Default try { @@ -128,9 +148,9 @@ public class JPredClient extends Thread { String OutputHeader; - ext.vamsas.JpredResult result; - ext.vamsas.Sequence sequence; - ext.vamsas.Msfalignment msa; + vamsas.objects.simple.JpredResult result; + vamsas.objects.simple.Sequence sequence; + vamsas.objects.simple.Msfalignment msa; String jobId; boolean jobComplete = false; int allowedServerExceptions = 3; // thread dies if too many exceptions. @@ -138,7 +158,7 @@ public class JPredClient JPredThread(SequenceI seq) { OutputHeader = wsInfo.getProgressText(); - this.sequence = new ext.vamsas.Sequence(); + this.sequence = new vamsas.objects.simple.Sequence(); this.sequence.setId(seq.getName()); this.sequence.setSeq(AlignSeq.extractGaps("-. ", seq.getSequence())); } @@ -146,13 +166,13 @@ public class JPredClient JPredThread(SequenceI[] msf) { OutputHeader = wsInfo.getProgressText(); - this.sequence = new ext.vamsas.Sequence(); + this.sequence = new vamsas.objects.simple.Sequence(); this.sequence.setId(msf[0].getName()); this.sequence.setSeq(AlignSeq.extractGaps("-. ", msf[0].getSequence())); jalview.io.PileUpfile mwrite = new jalview.io.PileUpfile(); - this.msa = new ext.vamsas.Msfalignment(); + this.msa = new vamsas.objects.simple.Msfalignment(); msa.setMsf(mwrite.print(msf)); } @@ -169,27 +189,28 @@ public class JPredClient throw (new Exception( "Timed out when communicating with server\nTry again later.\n")); } - + if (result.getState()==0) + jalview.bin.Jalview.log.debug("Finished "+jobId); if (result.isRunning()) { wsInfo.setStatus(WebserviceInfo.STATE_RUNNING); } - else if (result.isQueued()) + if (result.isQueued()) { wsInfo.setStatus(WebserviceInfo.STATE_QUEUING); } + wsInfo.setProgressText(OutputHeader + "\n" + + result.getStatus()); + if (result.isFinished()) { + parseResult(); jobComplete = true; jobsRunning--; - } - else - { - wsInfo.setProgressText(OutputHeader + "\n" + - result.getStatus()); - + } else { + // catch exceptions if (! (result.isJobFailed() || result.isServerError())) { try @@ -205,6 +226,8 @@ public class JPredClient else { wsInfo.setStatus(WebserviceInfo.STATE_STOPPED_ERROR); + jobsRunning--; + jobComplete = true; } } } @@ -280,10 +303,12 @@ public class JPredClient "JPredWS Client: Failed to submit the prediction (Probably a server error - see below)\n" + e.toString() + "\n"); - // e.printStackTrace(); TODO: JBPNote DEBUG + jalview.bin.Jalview.log.debug("Failed Submission",e); } } + + private void addFloatAnnotations(Alignment al, int[] gapmap, Vector values, String Symname, String Visname, float min, @@ -327,21 +352,24 @@ public class JPredClient OutputHeader += ("\n" + result.getAligfile()); } - wsInfo.setProgressText(OutputHeader); + wsInfo.setProgressText(OutputHeader+"Parsing..."); try { + jalview.bin.Jalview.log.debug("Parsing output from JNet job."); // JPredFile prediction = new JPredFile("C:/JalviewX/files/jpred.txt", "File"); jalview.io.JPredFile prediction = new jalview.io.JPredFile(result. getPredfile(), "Paste"); SequenceI[] preds = prediction.getSeqsAsArray(); + jalview.bin.Jalview.log.debug("Got prediction profile."); Alignment al; int FirstSeq; // the position of the query sequence in Alignment al boolean noMsa = true; // set if no MSA has been returned by JPred if ( (this.msa != null) && (result.getAligfile() != null)) { + jalview.bin.Jalview.log.debug("Getting associated alignment."); // we ignore the returned alignment if we only predicted on a single sequence String format = jalview.io.IdentifyFile.Identify(result.getAligfile(), "Paste"); @@ -350,6 +378,16 @@ public class JPredClient { al = new Alignment(jalview.io.FormatAdapter.readFile( result.getAligfile(), "Paste", format)); + for (int i=0, j=al.getHeight(); i