From: Jim Procter Date: Tue, 23 May 2017 19:35:23 +0000 (+0100) Subject: JAL-2549 replace JABAWS 2.1 with 2.2 client and remove JPredWS client and tests X-Git-Tag: Release_2_10_2~3^2~70^2~2 X-Git-Url: http://source.jalview.org/gitweb/?a=commitdiff_plain;h=e8a5dff1de7b1205d1adc21ca3b00c8b63634026;p=jalview.git JAL-2549 replace JABAWS 2.1 with 2.2 client and remove JPredWS client and tests --- diff --git a/.classpath b/.classpath index 8aef745..c4a2832 100644 --- a/.classpath +++ b/.classpath @@ -39,7 +39,7 @@ - + diff --git a/lib/min-jabaws-client-2.1.0.jar b/lib/jabaws-min-client-2.2.0.jar similarity index 73% rename from lib/min-jabaws-client-2.1.0.jar rename to lib/jabaws-min-client-2.2.0.jar index ea5a1f4..bf1e8b1 100644 Binary files a/lib/min-jabaws-client-2.1.0.jar and b/lib/jabaws-min-client-2.2.0.jar differ diff --git a/src/jalview/ws/jws2/JPred301Client.java b/src/jalview/ws/jws2/JPred301Client.java deleted file mode 100644 index c15f256..0000000 --- a/src/jalview/ws/jws2/JPred301Client.java +++ /dev/null @@ -1,299 +0,0 @@ -/* - * Jalview - A Sequence Alignment Editor and Viewer ($$Version-Rel$$) - * Copyright (C) $$Year-Rel$$ The Jalview Authors - * - * This file is part of Jalview. - * - * Jalview is free software: you can redistribute it and/or - * modify it under the terms of the GNU General Public License - * as published by the Free Software Foundation, either version 3 - * of the License, or (at your option) any later version. - * - * Jalview is distributed in the hope that it will be useful, but - * WITHOUT ANY WARRANTY; without even the implied warranty - * of MERCHANTABILITY or FITNESS FOR A PARTICULAR - * PURPOSE. See the GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with Jalview. If not, see . - * The Jalview Authors are detailed in the 'AUTHORS' file. - */ -package jalview.ws.jws2; - -import jalview.datamodel.AlignmentAnnotation; -import jalview.datamodel.Annotation; -import jalview.gui.AlignFrame; -import jalview.ws.jws2.jabaws2.Jws2Instance; -import jalview.ws.params.ArgumentI; -import jalview.ws.params.OptionI; -import jalview.ws.params.WsParamSetI; -import jalview.ws.uimodel.AlignAnalysisUIText; - -import java.awt.Color; -import java.util.ArrayList; -import java.util.HashMap; -import java.util.HashSet; -import java.util.List; -import java.util.Map; -import java.util.Set; - -import compbio.data.sequence.FastaSequence; -import compbio.data.sequence.JpredAlignment; -import compbio.metadata.Argument; - -public class JPred301Client extends JabawsMsaInterfaceAlignCalcWorker -{ - /** - * - * @return default args for this service when run as dynamic web service - */ - public List selectDefaultArgs() - { - List rgs = new ArrayList(); - for (ArgumentI argi : service.getParamStore().getServiceParameters()) - { - if (argi instanceof OptionI) - { - List o = ((OptionI) argi).getPossibleValues(); - if (o.contains("-pred-nohits")) - { - OptionI cpy = ((OptionI) argi).copy(); - cpy.setValue("-pred-nohits"); - rgs.add(cpy); - } - } - } - return JabaParamStore.getJabafromJwsArgs(rgs); - } - - public JPred301Client(Jws2Instance service, AlignFrame alignFrame, - WsParamSetI preset, List paramset) - { - super(service, alignFrame, preset, paramset); - submitGaps = true; - alignedSeqs = true; - nucleotidesAllowed = false; - proteinAllowed = true; - gapMap = new boolean[0]; - updateParameters(null, selectDefaultArgs()); - } - - @Override - boolean checkValidInputSeqs(boolean dynamic, List seqs) - { - return (seqs.size() > 1); - } - - @Override - public String getServiceActionText() - { - return "calculating consensus secondary structure prediction using JPred service"; - } - - private static Map jpredRowLabels = new HashMap(); - - private static final Set jpredRes_graph; - - private static final Set jpredRes_ssonly; - static - { - jpredRes_ssonly = new HashSet(); - jpredRes_ssonly.add("jnetpred".toLowerCase()); - jpredRes_ssonly.add("jnetpssm".toLowerCase()); - jpredRes_ssonly.add("jnethmm".toLowerCase()); - jpredRes_graph = new HashSet(); - jpredRes_graph.add("jnetconf".toLowerCase()); - jpredRes_graph.add("jnet burial".toLowerCase()); - } - - /** - * update the consensus annotation from the sequence profile data using - * current visualization settings. - */ - @Override - public void updateResultAnnotation(boolean immediate) - { - if (immediate || !calcMan.isWorking(this) && msascoreset != null) - { - if (msascoreset instanceof compbio.data.sequence.JpredAlignment) - { - JpredAlignment jpres = (JpredAlignment) msascoreset; - int alWidth = alignViewport.getAlignment().getWidth(); - ArrayList ourAnnot = new ArrayList(); - char[] sol = new char[jpres.getJpredSequences().get(0).getLength()]; - boolean firstsol = true; - for (FastaSequence fsq : jpres.getJpredSequences()) - { - String[] k = jpredRowLabels.get(fsq.getId()); - if (k == null) - { - k = new String[] { fsq.getId(), "JNet Output" }; - } - if (fsq.getId().startsWith("JNETSOL")) - { - char amnt = (fsq.getId().endsWith("25") ? "3" : fsq.getId() - .endsWith("5") ? "6" : "9").charAt(0); - char[] vseq = fsq.getSequence().toCharArray(); - for (int spos = 0, sposL = fsq.getLength(); spos < sposL; spos++) - { - if (firstsol) - { - sol[spos] = '0'; - } - if (vseq[spos] == 'B' - && (sol[spos] == '0' || sol[spos] < amnt)) - { - sol[spos] = amnt; - } - } - firstsol = false; - } - else - { - createAnnotationRowFromString( - ourAnnot, - getCalcId(), - alWidth, - k[0], - k[1], - jpredRes_graph.contains(fsq.getId()) ? AlignmentAnnotation.BAR_GRAPH - : AlignmentAnnotation.NO_GRAPH, 0f, 9f, - fsq.getSequence()); - } - - } - createAnnotationRowFromString( - ourAnnot, - getCalcId(), - alWidth, - "Jnet Burial", - "Prediction of Solvent Accessibility
levels are
  • 0 - Exposed
  • 3 - 25% or more S.A. accessible
  • 6 - 5% or more S.A. accessible
  • 9 - Buried (<5% exposed)
", - AlignmentAnnotation.BAR_GRAPH, 0f, 9f, new String(sol)); - for (FastaSequence fsq : jpres.getSequences()) - { - if (fsq.getId().equalsIgnoreCase("QUERY")) - { - createAnnotationRowFromString(ourAnnot, getCalcId(), alWidth, - "Query", "JPred Reference Sequence", - AlignmentAnnotation.NO_GRAPH, 0f, 0f, fsq.getSequence()); - } - } - if (ourAnnot.size() > 0) - { - updateOurAnnots(ourAnnot); - } - } - } - } - - private void createAnnotationRowFromString( - ArrayList ourAnnot, String calcId, - int alWidth, String label, String descr, int rowType, float min, - float max, String jpredPrediction) - { - // simple annotation row - AlignmentAnnotation annotation = alignViewport.getAlignment() - .findOrCreateAnnotation(label, calcId, true, null, null); - if (alWidth == gapMap.length) // scr.getScores().size()) - { - annotation.label = new String(label); - annotation.description = new String(descr); - annotation.graph = rowType; - annotation.graphMin = min; - annotation.graphMax = max; - if (constructAnnotationFromString(annotation, jpredPrediction, - alWidth, rowType)) - { - // created a valid annotation from the data - ourAnnot.add(annotation); - // annotation.validateRangeAndDisplay(); - } - } - } - - private boolean constructAnnotationFromString( - AlignmentAnnotation annotation, String sourceData, int alWidth, - int rowType) - { - if (sourceData.length() == 0 && alWidth > 0) - { - return false; - } - Annotation[] elm = new Annotation[alWidth]; - boolean ssOnly = jpredRes_ssonly.contains(annotation.label - .toLowerCase()); - boolean graphOnly = rowType != AlignmentAnnotation.NO_GRAPH; - if (!ssOnly && !graphOnly) - { - // for burial 'B' - annotation.showAllColLabels = true; - } - - for (int i = 0, iSize = sourceData.length(); i < iSize; i++) - { - char annot = sourceData.charAt(i); - // if we're at a gapped column then skip to next ungapped position - if (gapMap != null && gapMap.length > 0) - { - while (!gapMap[i]) - { - elm[i++] = new Annotation("", "", ' ', Float.NaN); - } - } - switch (rowType) - { - case AlignmentAnnotation.NO_GRAPH: - elm[i] = ssOnly ? new Annotation("", "", annot, Float.NaN, - colourSS(annot)) : new Annotation("" + annot, "" + annot, - '\0', Float.NaN); - break; - default: - try - { - elm[i] = new Annotation("" + annot, "" + annot, annot, - Integer.valueOf("" + annot)); - } catch (Exception x) - { - System.err.println("Expected numeric value in character '" - + annot + "'"); - } - } - } - - annotation.annotations = elm; - annotation.belowAlignment = true; - annotation.validateRangeAndDisplay(); - return true; - } - - private Color colourSS(char annot) - { - switch (annot) - { - case 'H': - return jalview.renderer.AnnotationRenderer.HELIX_COLOUR; - case 'E': - return jalview.renderer.AnnotationRenderer.SHEET_COLOUR; - } - return jalview.renderer.AnnotationRenderer.GLYPHLINE_COLOR; - } - - @Override - public String getCalcId() - { - return CALC_ID; - } - - private static String CALC_ID = "jabaws21.JPred3Cons"; - - public static AlignAnalysisUIText getAlignAnalysisUITest() - { - return new AlignAnalysisUIText( - compbio.ws.client.Services.JpredWS.toString(), - jalview.ws.jws2.JPred301Client.class, CALC_ID, false, true, - true, "JPred Consensus", - "When checked, JPred consensus is updated automatically.", - "Change JPred Settings...", - "Modify settings for JPred calculations."); - } -} diff --git a/src/jalview/ws/jws2/jabaws2/Jws2InstanceFactory.java b/src/jalview/ws/jws2/jabaws2/Jws2InstanceFactory.java index 7c8395f..671b5f1 100644 --- a/src/jalview/ws/jws2/jabaws2/Jws2InstanceFactory.java +++ b/src/jalview/ws/jws2/jabaws2/Jws2InstanceFactory.java @@ -21,7 +21,6 @@ package jalview.ws.jws2.jabaws2; import jalview.ws.jws2.AAConClient; -import jalview.ws.jws2.JPred301Client; import jalview.ws.jws2.RNAalifoldClient; import jalview.ws.uimodel.AlignAnalysisUIText; @@ -51,11 +50,8 @@ public class Jws2InstanceFactory AAConClient.getAlignAnalysisUITest()); aaConGUI.put(compbio.ws.client.Services.RNAalifoldWS.toString(), RNAalifoldClient.getAlignAnalysisUITest()); - // disable the JPred301 client in jalview ... + // ignore list for JABAWS services not supported in jalview ... ignoreGUI = new HashSet(); - ignoreGUI.add(compbio.ws.client.Services.JpredWS.toString()); - aaConGUI.put(compbio.ws.client.Services.JpredWS.toString(), - JPred301Client.getAlignAnalysisUITest()); } } diff --git a/test/jalview/ws/jabaws/JpredJabaStructExportImport.java b/test/jalview/ws/jabaws/JpredJabaStructExportImport.java deleted file mode 100644 index dc157e2..0000000 --- a/test/jalview/ws/jabaws/JpredJabaStructExportImport.java +++ /dev/null @@ -1,327 +0,0 @@ -/* - * Jalview - A Sequence Alignment Editor and Viewer ($$Version-Rel$$) - * Copyright (C) $$Year-Rel$$ The Jalview Authors - * - * This file is part of Jalview. - * - * Jalview is free software: you can redistribute it and/or - * modify it under the terms of the GNU General Public License - * as published by the Free Software Foundation, either version 3 - * of the License, or (at your option) any later version. - * - * Jalview is distributed in the hope that it will be useful, but - * WITHOUT ANY WARRANTY; without even the implied warranty - * of MERCHANTABILITY or FITNESS FOR A PARTICULAR - * PURPOSE. See the GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with Jalview. If not, see . - * The Jalview Authors are detailed in the 'AUTHORS' file. - */ -package jalview.ws.jabaws; - -import static org.testng.AssertJUnit.assertNotNull; -import static org.testng.AssertJUnit.assertTrue; - -import jalview.bin.Cache; -import jalview.datamodel.AlignmentI; -import jalview.gui.Jalview2XML; -import jalview.gui.JvOptionPane; -import jalview.io.AnnotationFile; -import jalview.io.DataSourceType; -import jalview.io.FileFormat; -import jalview.io.FormatAdapter; -import jalview.io.StockholmFileTest; -import jalview.ws.jws2.JPred301Client; -import jalview.ws.jws2.JabaParamStore; -import jalview.ws.jws2.Jws2Discoverer; -import jalview.ws.jws2.SequenceAnnotationWSClient; -import jalview.ws.jws2.jabaws2.Jws2Instance; -import jalview.ws.params.AutoCalcSetting; - -import java.awt.Component; -import java.util.ArrayList; -import java.util.List; - -import javax.swing.JMenu; -import javax.swing.JMenuItem; - -import org.testng.Assert; -import org.testng.annotations.AfterClass; -import org.testng.annotations.BeforeClass; -import org.testng.annotations.BeforeGroups; -import org.testng.annotations.Test; - -import compbio.metadata.Argument; -import compbio.metadata.WrongParameterException; - -public class JpredJabaStructExportImport -{ - - @BeforeClass(alwaysRun = true) - public void setUpJvOptionPane() - { - JvOptionPane.setInteractiveMode(false); - JvOptionPane.setMockResponse(JvOptionPane.CANCEL_OPTION); - } - - public static String testseqs = "examples/uniref50.fa"; - - public static Jws2Discoverer disc; - - public static Jws2Instance jpredws; - - jalview.ws.jws2.JPred301Client jpredClient; - - public static jalview.gui.AlignFrame af = null; - - @BeforeGroups(groups = { "Network" }) - public static void setUpBeforeClass() throws Exception - { - Cache.loadProperties("test/jalview/io/testProps.jvprops"); - Cache.initLogger(); - disc = JalviewJabawsTestUtils.getJabawsDiscoverer(false); - - for (Jws2Instance svc : disc.getServices()) - { - if (svc.getServiceTypeURI().toLowerCase().contains("jpred")) - { - jpredws = svc; - } - } - - System.out.println("State of jpredws: " + jpredws); - Assert.assertNotNull(jpredws, "jpredws is null!"); - jalview.io.FileLoader fl = new jalview.io.FileLoader(false); - af = fl.LoadFileWaitTillLoaded(testseqs, jalview.io.DataSourceType.FILE); - assertNotNull("Couldn't load test data ('" + testseqs + "')", af); - } - - @AfterClass(alwaysRun = true) - public static void tearDownAfterClass() throws Exception - { - if (af != null) - { - af.setVisible(false); - af.dispose(); - } - } - - @Test(groups = { "Network" }, enabled = false) - public void testJPredStructOneSeqOnly() - { - af.selectAllSequenceMenuItem_actionPerformed(null); - af.getViewport() - .getSelectionGroup() - .addOrRemove( - af.getViewport().getSelectionGroup().getSequenceAt(0), - false); - af.hideSelSequences_actionPerformed(null); - jpredClient = new JPred301Client(jpredws, af, null, null); - - assertTrue( - "Didn't find any default args to check for. Buggy implementation of hardwired arguments in client.", - jpredClient.selectDefaultArgs().size() > 0); - - boolean success = false; - af.getViewport().getCalcManager().startWorker(jpredClient); - do - { - try - { - Thread.sleep(500); - List args = JabaParamStore.getJabafromJwsArgs(af - .getViewport() - .getCalcIdSettingsFor(jpredClient.getCalcId()) - .getArgumentSet()), defargs = jpredClient - .selectDefaultArgs(); - for (Argument rg : args) - { - for (Argument defg : defargs) - { - if (defg.equals(rg)) - { - success = true; - } - } - } - if (!success) - { - jpredClient.cancelCurrentJob(); - Assert.fail("Jpred Client didn't run with hardwired default parameters."); - } - - } catch (InterruptedException x) - { - } - ; - } while (af.getViewport().getCalcManager().isWorking()); - - } - - @Test(groups = { "Network" }, enabled = false) - public void testJPredStructExport() - { - - jpredClient = new JPred301Client(jpredws, af, null, null); - - af.getViewport().getCalcManager().startWorker(jpredClient); - - do - { - try - { - Thread.sleep(50); - } catch (InterruptedException x) - { - } - ; - } while (af.getViewport().getCalcManager().isWorking()); - - AlignmentI orig_alig = af.getViewport().getAlignment(); - - testAnnotationFileIO("Testing JPredWS Annotation IO", orig_alig); - - } - - public static void testAnnotationFileIO(String testname, AlignmentI al) - { - try - { - // what format would be appropriate for RNAalifold annotations? - String aligfileout = FileFormat.Pfam.getWriter(null).print( - al.getSequencesArray(), true); - - String anfileout = new AnnotationFile() - .printAnnotationsForAlignment(al); - assertTrue( - "Test " - + testname - + "\nAlignment annotation file was not regenerated. Null string", - anfileout != null); - assertTrue( - "Test " - + testname - + "\nAlignment annotation file was not regenerated. Empty string", - anfileout.length() > "JALVIEW_ANNOTATION".length()); - - System.out.println("Output annotation file:\n" + anfileout - + "\n< opts = new ArrayList(); - for (compbio.metadata.Argument rg : (List) jpredws - .getRunnerConfig().getArguments()) - { - if (rg.getDescription().contains("emperature")) - { - try - { - rg.setValue("292"); - } catch (WrongParameterException q) - { - Assert.fail("Couldn't set the temperature parameter " - + q.getStackTrace()); - } - opts.add(rg); - } - if (rg.getDescription().contains("max")) - { - opts.add(rg); - } - } - jpredClient = new JPred301Client(jpredws, af, null, opts); - - af.getViewport().getCalcManager().startWorker(jpredClient); - - do - { - try - { - Thread.sleep(50); - } catch (InterruptedException x) - { - } - ; - } while (af.getViewport().getCalcManager().isWorking()); - AutoCalcSetting oldacs = af.getViewport().getCalcIdSettingsFor( - jpredClient.getCalcId()); - String oldsettings = oldacs.getWsParamFile(); - // write out parameters - jalview.gui.AlignFrame nalf = null; - assertTrue("Couldn't write out the Jar file", - new Jalview2XML(false).saveAlignment(af, - "testJPredWS_param.jar", "trial parameter writeout")); - assertTrue("Couldn't read back the Jar file", (nalf = new Jalview2XML( - false).loadJalviewAlign("testJpredWS_param.jar")) != null); - if (nalf != null) - { - AutoCalcSetting acs = af.getViewport().getCalcIdSettingsFor( - jpredClient.getCalcId()); - assertTrue("Calc ID settings not recovered from viewport stash", - acs.equals(oldacs)); - assertTrue( - "Serialised Calc ID settings not identical to those recovered from viewport stash", - acs.getWsParamFile().equals(oldsettings)); - JMenu nmenu = new JMenu(); - new SequenceAnnotationWSClient() - .attachWSMenuEntry(nmenu, jpredws, af); - assertTrue("Couldn't get menu entry for service", - nmenu.getItemCount() > 0); - for (Component itm : nmenu.getMenuComponents()) - { - if (itm instanceof JMenuItem) - { - JMenuItem i = (JMenuItem) itm; - if (i.getText().equals( - jpredws.getAlignAnalysisUI().getAAconToggle())) - { - i.doClick(); - break; - } - } - } - while (af.getViewport().isCalcInProgress()) - { - try - { - Thread.sleep(200); - } catch (Exception x) - { - } - ; - } - AutoCalcSetting acs2 = af.getViewport().getCalcIdSettingsFor( - jpredClient.getCalcId()); - assertTrue( - "Calc ID settings after recalculation has not been recovered.", - acs2.getWsParamFile().equals(oldsettings)); - } - } -}