1 package compbio.ws.server;
\r
3 import java.util.List;
\r
5 import org.apache.log4j.Logger;
\r
7 import compbio.data.sequence.FastaSequence;
\r
8 import compbio.data.sequence.ScoreManager;
\r
9 import compbio.engine.client.ConfiguredExecutable;
\r
10 import compbio.engine.client.SkeletalExecutable;
\r
11 import compbio.metadata.JobSubmissionException;
\r
12 import compbio.metadata.Limit;
\r
13 import compbio.metadata.LimitExceededException;
\r
14 import compbio.metadata.Option;
\r
15 import compbio.metadata.Preset;
\r
16 import compbio.metadata.ResultNotAvailableException;
\r
17 import compbio.metadata.UnsupportedRuntimeException;
\r
18 import compbio.metadata.WrongParameterException;
\r
19 import compbio.runner.conservation.AACon;
\r
22 * Common methods for all SequenceAnnotation web services
\r
28 * @version 1.0 June 2011
\r
31 public abstract class SequenceAnnotationService<T> extends GenericMetadataService {
\r
34 * FIXME - instances of the Runner (?) and their types should be defined in
\r
37 SequenceAnnotationService(SkeletalExecutable<T> exec, Logger log) {
\r
41 public ScoreManager getAnnotation(String jobId)
\r
42 throws ResultNotAvailableException {
\r
43 return WSUtil.getAnnotation(jobId, log);
\r
46 public String analize(List<FastaSequence> sequences)
\r
47 throws UnsupportedRuntimeException, LimitExceededException,
\r
48 JobSubmissionException {
\r
49 WSUtil.validateFastaInput(sequences);
\r
50 ConfiguredExecutable<T> confIUPred = init(sequences);
\r
51 return WSUtil.analize(sequences, confIUPred, log, "analize",
\r
55 public String customAnalize(List<FastaSequence> sequences,
\r
56 List<Option<T>> options) throws UnsupportedRuntimeException,
\r
57 LimitExceededException, JobSubmissionException,
\r
58 WrongParameterException {
\r
59 WSUtil.validateAAConInput(sequences);
\r
60 ConfiguredExecutable<T> confAACon = init(sequences);
\r
61 // Could not do that! Space separated values
\r
62 // will all be treated as keys! thus duplicates removed
\r
63 // String params = cbuilder.getCommand();
\r
64 List<String> params = WSUtil.getCommands(options,
\r
65 AACon.KEY_VALUE_SEPARATOR);
\r
66 confAACon.addParameters(params);
\r
67 return WSUtil.analize(sequences, confAACon, log, "customAnalize",
\r
71 public String presetAnalize(List<FastaSequence> sequences, Preset<T> preset)
\r
72 throws UnsupportedRuntimeException, LimitExceededException,
\r
73 JobSubmissionException, WrongParameterException {
\r
74 WSUtil.validateAAConInput(sequences);
\r
75 if (preset == null) {
\r
76 throw new WrongParameterException("Preset must be provided!");
\r
78 ConfiguredExecutable<T> confAAcon = init(sequences);
\r
79 confAAcon.addParameters(preset.getOptions());
\r
80 Limit<T> limit = getLimit(preset.getName());
\r
82 .analize(sequences, confAAcon, log, "presetAnalize", limit);
\r