import jalview.gui.AlignFrame;
import jalview.ws.WSClient;
import jalview.ws.WSMenuEntryProviderI;
-import jalview.ws.api.JPredMutlipleAlignmentServiceI;
+import jalview.ws.api.JPredServiceI;
import jalview.ws.api.ServiceWithParameters;
public class JPredClient extends WSClient
{
- JPredMutlipleAlignmentServiceI server;
+ JPredServiceI server;
public JPredClient(ServiceWithParameters sh, String title,
AlignmentView alView, AlignFrame alFrame, boolean viewOnly)
{
- server = (JPredMutlipleAlignmentServiceI) sh.getEndpoint();
+ server = (JPredServiceI) sh.getEndpoint();
wsInfo = setWebService(sh, false);
startClient(title, alView, alFrame, viewOnly);
}
{
var msf = view.getSequences();
var seq = msf[0].getSeq('-');
- if (msf.length <= 1)
- throw new RuntimeException("You need more than one sequence.");
+ int[] delMap = null;
+ if (viewOnly)
+ delMap = view.getVisibleContigMapFor(seq.gapMap());
var aln = new SequenceI[msf.length];
for (int i = 0; i < msf.length; i++)
{
aln[i] = msf[i].getSeq('-');
}
- int[] delMap = viewOnly ?
- view.getVisibleContigMapFor(seq.gapMap()) : null;
- var sequenceInfo = SeqsetUtils.uniquify(aln, true);
+ var sequenceInfo = msf.length > 1 ? SeqsetUtils.uniquify(aln, true)
+ : SeqsetUtils.SeqCharacterHash(seq);
+ if (viewOnly)
+ {
+ String seqs[] = view.getSequenceStrings('-');
+ for (int i = 0; i < msf.length; i++)
+ aln[i].setSequence(seqs[i]);
+ seq.setSequence(seqs[0]);
+ }
var thread = new JPredThread(wsInfo, title, server, sequenceInfo, aln,
delMap, view, frame, WsURL);
wsInfo.setthisService(thread);
mi.setToolTipText(sh.getHostURL());
mi.addActionListener((event) -> {
var view = frame.gatherSeqOrMsaForSecStrPrediction();
- if (view.getSequences().length > 1)
- {
- new JPredClient(sh, frame.getTitle(), view, frame, true);
- }
- else
- {
- Cache.log.error("Single sequence not supported");
- }
+ new JPredClient(sh, frame.getTitle(), view, frame, true);
});
menu.add(mi);
};