Clover icon

Coverage Report

  1. Project Clover database Wed Dec 3 2025 17:03:17 GMT
  2. Package jalview.ws2.client.jpred4

File JPred4WSClient.java

 

Coverage histogram

../../../../img/srcFileCovDistChart2.png
54% of files have more coverage

Code metrics

10
42
10
1
137
119
21
0.5
4.2
10
2.1

Classes

Class Line # Actions
JPred4WSClient 23 42 21
0.1290322512.9%
 

Contributing tests

This file is covered by 41 tests. .

Source view

1    package jalview.ws2.client.jpred4;
2   
3    import java.io.ByteArrayOutputStream;
4    import java.io.IOException;
5    import java.util.List;
6   
7    import jalview.datamodel.SequenceI;
8    import jalview.io.AlignFile;
9    import jalview.io.DataSourceType;
10    import jalview.io.FastaFile;
11    import jalview.io.FileFormat;
12    import jalview.io.FormatAdapter;
13    import jalview.io.JPredFile;
14    import jalview.ws.params.ArgumentI;
15    import jalview.ws2.api.Credentials;
16    import jalview.ws2.api.JobStatus;
17    import jalview.ws2.api.WebServiceJobHandle;
18    import jalview.ws2.client.api.SecStructPredWebServiceClientI;
19    import uk.ac.dundee.compbio.jpred.JPredClient;
20    import uk.ac.dundee.compbio.jpred.JPredRequest;
21    import uk.ac.dundee.compbio.jpred.ResultTypes;
22   
 
23    public class JPred4WSClient implements SecStructPredWebServiceClientI
24    {
25    final JPredClient client;
26   
27    private final JPredRequest.Mode mode;
28   
29    private final JPredRequest.Format format;
30   
 
31  116 toggle JPred4WSClient(JPredClient client, boolean msaMode)
32    {
33  116 this.mode = msaMode ? JPredRequest.Mode.MSA : JPredRequest.Mode.SINGLE;
34  116 this.format = msaMode ? JPredRequest.Format.FASTA : JPredRequest.Format.SEQ;
35  116 this.client = client;
36    }
37   
 
38  0 toggle @Override
39    public String getUrl()
40    {
41  0 return client.getURL().toString();
42    }
43   
 
44  0 toggle @Override
45    public String getClientName()
46    {
47  0 return "jpred4";
48    }
49   
 
50  0 toggle @Override
51    public WebServiceJobHandle submit(List<SequenceI> sequences,
52    List<ArgumentI> args, Credentials credentials) throws IOException
53    {
54  0 var input = mode == JPredRequest.Mode.MSA
55    ? FileFormat.Fasta
56    .getWriter(null)
57    .print(sequences.toArray(new SequenceI[sequences.size()]), false)
58    : sequences.get(0).getSequenceAsString();
59   
60  0 JPredRequest request = JPredRequest
61    .newBuilder()
62    .mode(mode)
63    .format(format)
64    .input(input)
65    .build();
66  0 var jobId = client.submit(request);
67  0 return new WebServiceJobHandle(getClientName(), "jpred4", getUrl(), jobId);
68    }
69   
 
70  0 toggle @Override
71    public JobStatus getStatus(WebServiceJobHandle job) throws IOException
72    {
73  0 var status = client.getStatus(job.getJobId());
74  0 switch (status)
75    {
76  0 case PENDING:
77  0 return JobStatus.QUEUED;
78  0 case RUNNING:
79  0 return JobStatus.RUNNING;
80  0 case FINISHED:
81  0 return JobStatus.COMPLETED;
82  0 case NO_JOB:
83  0 return JobStatus.SERVER_ERROR;
84  0 case MALFORMED:
85  0 return JobStatus.INVALID;
86  0 case NOT_EXIST:
87  0 return JobStatus.SERVER_ERROR;
88  0 default:
89  0 return JobStatus.UNKNOWN;
90    }
91    }
92   
 
93  0 toggle @Override
94    public String getLog(WebServiceJobHandle job) throws IOException
95    {
96  0 var stream = client.getResultStream(job.getJobId(), ResultTypes.LOG);
97    // FIXME: potential OOM
98  0 return new String(stream.readAllBytes());
99    }
100   
 
101  0 toggle @Override
102    public String getErrorLog(WebServiceJobHandle job) throws IOException
103    {
104  0 return "";
105    }
106   
 
107  0 toggle @Override
108    public void cancel(WebServiceJobHandle job)
109    throws IOException, UnsupportedOperationException
110    {
111   
112    }
113   
 
114  0 toggle @Override
115    public AlignFile getAlignmentFile(WebServiceJobHandle job) throws IOException
116    {
117  0 var stream = client.getResultStream(job.getJobId(), ResultTypes.PSIBLAST_ALIGN);
118  0 var buffer = new byte[2048];
119  0 var file = new ByteArrayOutputStream();
120  0 var len = 0;
121  0 while ((len= stream.read(buffer)) >= 0)
122  0 file.write(buffer, 0, len);
123  0 return new FastaFile(file.toString("UTF-8"), DataSourceType.PASTE);
124    }
125   
 
126  0 toggle @Override
127    public JPredFile getPredictionFile(WebServiceJobHandle job) throws IOException
128    {
129  0 var stream = client.getResultStream(job.getJobId(), ResultTypes.CONCISE);
130  0 var buffer = new byte[2048];
131  0 var file = new ByteArrayOutputStream();
132  0 var len = 0;
133  0 while ((len= stream.read(buffer)) >= 0)
134  0 file.write(buffer, 0, len);
135  0 return new JPredFile(file.toString("UTF-8"), DataSourceType.PASTE);
136    }
137    }