+ class BlastThread extends Thread\r
+ {\r
+ Sequence sequence;\r
+ String jobid;\r
+ boolean jobComplete = false;\r
+\r
+ BlastThread(Sequence sequence)\r
+ {\r
+ System.out.println("blasting for: "+sequence.getName());\r
+ this.sequence = sequence;\r
+ }\r
+\r
+ public void run()\r
+ {\r
+ StartJob();\r
+\r
+ while (!jobComplete)\r
+ {\r
+ try\r
+ {\r
+ WSWUBlastService service = new WSWUBlastServiceLocator();\r
+ WSWUBlast wublast = service.getWSWUBlast();\r
+ WSFile[] results = wublast.getResults(jobid);\r
+\r
+ if(results!=null)\r
+ {\r
+ String result = new String(wublast.poll(jobid, "tooloutput"));\r
+ parseResult(sequence, result);\r
+ jobComplete = true;\r
+ jobsRunning--;\r
+ }\r
+ else\r
+ {\r
+ Thread.sleep(10000);\r
+ System.out.println("WSWuBlastClient: I'm alive " +\r
+ sequence.getName() + " " + jobid); // log.debug\r
+ }\r
+ }\r
+ catch (Exception ex)\r
+ {\r
+ }\r
+ }\r
+ }\r
+\r
+ void StartJob()\r
+ {\r
+ InputParams params = new InputParams();\r
+\r
+ params.setProgram("blastp");\r
+ params.setDatabase("uniprot");\r
+ params.setMatrix("pam10");\r
+\r
+ params.setNumal(5);\r
+ params.setSensitivity("low");\r
+ params.setSort("totalscore");\r
+ params.setOutformat("txt");\r
+ params.setAsync(true);\r
+\r
+ try\r
+ {\r
+ Data inputs[] = new Data[1];\r
+ Data input= new Data();\r
+ input.setType("sequence");\r
+ input.setContent(AlignSeq.extractGaps("-. ",sequence.getSequenceAsString()));\r
+ inputs[0]=input;\r
+\r
+ WSWUBlastService service = new WSWUBlastServiceLocator();\r
+ WSWUBlast wublast = service.getWSWUBlast();\r
+ jobid = wublast.runWUBlast(params, inputs);\r
+ }\r
+ catch (Exception exp)\r
+ {\r
+ jobComplete = true;\r
+ jobsRunning--;\r
+ System.err.println("WSWUBlastClient error:\n" + exp.toString());\r
+ exp.printStackTrace();\r
+ }\r
+ }\r
+ }\r