Merge branch 'JAL-1378_jb2.1cli' into RNAalifold RNAalifold
authorJim Procter <jprocter@compbio.dundee.ac.uk>
Sat, 5 Oct 2013 14:03:53 +0000 (15:03 +0100)
committerJim Procter <jprocter@compbio.dundee.ac.uk>
Sat, 5 Oct 2013 14:03:53 +0000 (15:03 +0100)
src/jalview/datamodel/Sequence.java
src/jalview/gui/AlignFrame.java
src/jalview/gui/Desktop.java
src/jalview/ws/jws2/Jws2Discoverer.java
src/jalview/ws/jws2/RNAalifoldClient.java
src/jalview/ws/jws2/SequenceAnnotationWSClient.java
src/jalview/ws/jws2/jabaws2/Jws2InstanceFactory.java
utils/InstallAnywhere/Jalview.iap_xml

index 580c850..fa063ff 100755 (executable)
@@ -707,6 +707,7 @@ public class Sequence implements SequenceI
     {
       tmp = new char[i];
       System.arraycopy(sequence, 0, tmp, 0, i);
+      j=sequence.length;
     }
     else
     {
@@ -715,6 +716,9 @@ public class Sequence implements SequenceI
       System.arraycopy(sequence, j, tmp, i, sequence.length - j);
     }
     boolean createNewDs = false;
+    // TODO: take a look at the new dataset creation validation method below -
+    // this could become time comsuming for large sequences - consider making it
+    // more efficient
     for (int s = i; s < j; s++)
     {
       if (jalview.schemes.ResidueProperties.aaIndex[sequence[s]] != 23)
index ceb08ee..829b9ab 100755 (executable)
@@ -77,6 +77,7 @@ import jalview.schemes.UserColourScheme;
 import jalview.schemes.ZappoColourScheme;
 import jalview.ws.jws1.Discoverer;
 import jalview.ws.jws2.Jws2Discoverer;
+import jalview.ws.jws2.jabaws2.Jws2Instance;
 import jalview.ws.seqfetcher.DbSourceProxy;
 
 import java.awt.BorderLayout;
@@ -4158,6 +4159,7 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener,
       @Override
       public void run()
       {
+        final List<JMenuItem> legacyItems=new ArrayList<JMenuItem>();
         try
         {
           System.err.println("Building ws menu again "
@@ -4189,28 +4191,10 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener,
             // TODO: refactor to allow list of AbstractName/Handler bindings to
             // be
             // stored or retrieved from elsewhere
-            Vector msaws = null; // (Vector) Discoverer.services.get("MsaWS");
+            // No MSAWS used any more:
+            // Vector msaws = null; // (Vector) Discoverer.services.get("MsaWS");
             Vector secstrpr = (Vector) Discoverer.services
                     .get("SecStrPred");
-            Vector seqsrch = null; // (Vector)
-                                   // Discoverer.services.get("SeqSearch");
-            // TODO: move GUI generation code onto service implementation - so a
-            // client instance attaches itself to the GUI with method call like
-            // jalview.ws.MsaWSClient.bind(servicehandle, Desktop.instance,
-            // alignframe)
-            if (msaws != null)
-            {
-              // Add any Multiple Sequence Alignment Services
-              for (int i = 0, j = msaws.size(); i < j; i++)
-              {
-                final ext.vamsas.ServiceHandle sh = (ext.vamsas.ServiceHandle) msaws
-                        .get(i);
-                jalview.ws.WSMenuEntryProviderI impl = jalview.ws.jws1.Discoverer
-                        .getServiceClient(sh);
-                impl.attachWSMenuEntry(msawsmenu, me);
-
-              }
-            }
             if (secstrpr != null)
             {
               // Add any secondary structure prediction services
@@ -4220,35 +4204,23 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener,
                         .get(i);
                 jalview.ws.WSMenuEntryProviderI impl = jalview.ws.jws1.Discoverer
                         .getServiceClient(sh);
+                int p=secstrmenu.getItemCount();
                 impl.attachWSMenuEntry(secstrmenu, me);
-              }
-            }
-            if (seqsrch != null)
-            {
-              // Add any sequence search services
-              for (int i = 0, j = seqsrch.size(); i < j; i++)
-              {
-                final ext.vamsas.ServiceHandle sh = (ext.vamsas.ServiceHandle) seqsrch
-                        .elementAt(i);
-                jalview.ws.WSMenuEntryProviderI impl = jalview.ws.jws1.Discoverer
-                        .getServiceClient(sh);
-                impl.attachWSMenuEntry(seqsrchmenu, me);
+                int q=secstrmenu.getItemCount();
+                for (int litm=p;litm<q; litm++)
+                {
+                  legacyItems.add(secstrmenu.getItem(litm));
+                }
               }
             }
           }
-
+          
           // Add all submenus in the order they should appear on the web
           // services menu
           wsmenu.add(msawsmenu);
           wsmenu.add(secstrmenu);
           wsmenu.add(dismenu);
           wsmenu.add(analymenu);
-          // final ArrayList<JMenu> submens=new ArrayList<JMenu>();
-          // submens.add(msawsmenu);
-          // submens.add(secstrmenu);
-          // submens.add(dismenu);
-          // submens.add(analymenu);
-
           // No search services yet
           // wsmenu.add(seqsrchmenu);
 
@@ -4273,6 +4245,7 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener,
                   webService.add(me.webServiceNoServices);
                 }
                 // TODO: move into separate menu builder class.
+                boolean new_sspred=false;
                 if (Cache.getDefault("SHOW_JWS2_SERVICES", true))
                 {
                   Jws2Discoverer jws2servs = Jws2Discoverer.getDiscoverer();
@@ -4281,6 +4254,16 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener,
                     if (jws2servs.hasServices())
                     {
                       jws2servs.attachWSMenuEntry(webService, me);
+                      for (Jws2Instance sv:jws2servs.getServices()) {
+                        if (sv.description.toLowerCase().contains("jpred"))
+                        {
+                          for (JMenuItem jmi:legacyItems)
+                          {
+                            jmi.setVisible(false);
+                          }
+                        }
+                      }
+                      
                     }
                     if (jws2servs.isRunning())
                     {
@@ -4291,7 +4274,6 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener,
                     }
                   }
                 }
-
                 build_urlServiceMenu(me.webService);
                 build_fetchdbmenu(webService);
                 for (JMenu item : wsmenu)
index 322365c..ab8d0af 100644 (file)
@@ -2436,7 +2436,9 @@ public class Desktop extends jalview.jbgui.GDesktop implements
   {
     boolean alive = true;
     Thread t0 = null, t1 = null, t2 = null;
-
+    // JAL-940 - JALVIEW 1 services are now being EOLed as of JABA 2.1 release
+    if (true)
+    {
     // todo: changesupport handlers need to be transferred
     if (discoverer == null)
     {
@@ -2446,28 +2448,31 @@ public class Desktop extends jalview.jbgui.GDesktop implements
     }
     // JAL-940 - disabled JWS1 service configuration - always start discoverer
     // until we phase out completely
-    if (true)
-    {
       (t0 = new Thread(discoverer)).start();
     }
 
-    try
+    // ENFIN services are EOLed as of Jalview 2.8.1 release
+    if (false)
     {
-      if (Cache.getDefault("SHOW_ENFIN_SERVICES", true))
+      try
       {
-        // EnfinEnvision web service menu entries are rebuild every time the
-        // menu is shown, so no changeSupport events are needed.
-        jalview.ws.EnfinEnvision2OneWay.getInstance();
-        (t1 = new Thread(jalview.ws.EnfinEnvision2OneWay.getInstance()))
-                .start();
+        if (Cache.getDefault("SHOW_ENFIN_SERVICES", true))
+        {
+          // EnfinEnvision web service menu entries are rebuild every time the
+          // menu is shown, so no changeSupport events are needed.
+          jalview.ws.EnfinEnvision2OneWay.getInstance();
+          (t1 = new Thread(jalview.ws.EnfinEnvision2OneWay.getInstance()))
+                  .start();
+        }
+      } catch (Exception e)
+      {
+        Cache.log
+                .info("Exception when trying to launch Envision2 workflow discovery.",
+                        e);
+        Cache.log.info(e.getStackTrace());
       }
-    } catch (Exception e)
-    {
-      Cache.log
-              .info("Exception when trying to launch Envision2 workflow discovery.",
-                      e);
-      Cache.log.info(e.getStackTrace());
     }
+
     if (Cache.getDefault("SHOW_JWS2_SERVICES", true))
     {
       if (jalview.ws.jws2.Jws2Discoverer.getDiscoverer().isRunning())
index 32e9ad5..8f56e2f 100644 (file)
@@ -38,6 +38,7 @@ import java.util.HashSet;
 import java.util.Hashtable;
 import java.util.List;
 import java.util.Map;
+import java.util.Set;
 import java.util.StringTokenizer;
 import java.util.Vector;
 
@@ -105,6 +106,7 @@ public class Jws2Discoverer implements Runnable, WSMenuEntryProviderI
 
   public void run()
   {
+
     if (running && oldthread != null && oldthread.isAlive())
     {
       if (!aborted)
@@ -127,6 +129,13 @@ public class Jws2Discoverer implements Runnable, WSMenuEntryProviderI
     }
     running = true;
     
+    // first set up exclusion list if needed
+    final Set<String> ignoredServices = new HashSet<String>();
+    for (String ignored:jalview.bin.Cache.getDefault("IGNORED_JABAWS_SERVICETYPES", Services.JpredWS.toString()).split("\\|"))
+    {
+      ignoredServices.add(ignored);
+    }
+
     
     changeSupport.firePropertyChange("services", services, new Vector());
     oldthread = Thread.currentThread();
@@ -171,7 +180,10 @@ public class Jws2Discoverer implements Runnable, WSMenuEntryProviderI
         // for all possible services
         for (Services sv : squery.JABAWS2SERVERS)
         {
-          svctypes.add(sv.toString());
+          if (!ignoredServices.contains(sv.toString()))
+          {
+            svctypes.add(sv.toString());
+          }
         }
 
       }
@@ -226,7 +238,10 @@ public class Jws2Discoverer implements Runnable, WSMenuEntryProviderI
         services = new Vector<Jws2Instance>();
         for (Jws2Instance svc : svcs)
         {
-          services.add(svc);
+          if (!ignoredServices.contains(svc.serviceType))
+          {
+            services.add(svc);
+          }
         }
       }
     }
index 2779732..ec40552 100644 (file)
@@ -216,9 +216,17 @@ public class RNAalifoldClient extends JabawsAlignCalcWorker implements
         basePairs.put(score.getRanges().first(), new Float(score
                 .getScores().get(0)));
       }
-      for (int i = 0; i < struct.length(); i++)
+      
+      for (int i = 0,ri=0,iEnd=struct.length();i<iEnd; i++,ri++)
       {
-
+        if (gapMap!=null)
+        {
+          // skip any gapped columns in the input data
+          while (!gapMap[ri])
+          {
+            ri++;
+          }
+        }
         // Return all the contacts associated with position i
         LinkedHashMap<Range, Float> contacts = isContact(basePairs, i + 1);
 
@@ -242,16 +250,23 @@ public class RNAalifoldClient extends JabawsAlignCalcWorker implements
           }
         }
 
-        anns[i] = new Annotation(struct.substring(i, i + 1), description,
+        anns[ri] = new Annotation(struct.substring(i, i + 1), description,
                 isSS(struct.charAt(i)), prob);
       }
     }
     else if (data == null || data.size() == 1)
     {
-      for (int i = 0; i < struct.length(); i++)
+      for (int i = 0,ri=0,iEnd=struct.length();i<iEnd; i++,ri++)
       {
-
-        anns[i] = new Annotation(struct.substring(i, i + 1), "",
+        if (gapMap!=null)
+        {
+          // skip any gapped columns in the input data
+          while (!gapMap[ri])
+          {
+            ri++;
+          }
+        }
+        anns[ri] = new Annotation(struct.substring(i, i + 1), "",
                 isSS(struct.charAt(i)), Float.NaN);
       }
 
index cca6af3..59cc962 100644 (file)
@@ -301,42 +301,7 @@ public class SequenceAnnotationWSClient extends Jws2Client
     {
       final JCheckBoxMenuItem aaConEnabled = new JCheckBoxMenuItem(
               aaui.getAAconToggle());
-      wsmenu.addMenuListener(new MenuListener()
-      {
 
-        @Override
-        public void menuSelected(MenuEvent arg0)
-        {
-          // TODO: refactor to the implementing class.
-          wsmenu.setEnabled((alignFrame.getViewport().getAlignment()
-                  .isNucleotide() ? aaui.isNa() : aaui.isPr()));
-          List<AlignCalcWorkerI> aaconClient = alignFrame.getViewport()
-                  .getCalcManager()
-                  .getRegisteredWorkersOfClass(aaui.getClient());
-          if (aaconClient != null && aaconClient.size() > 0)
-          {
-            aaConEnabled.setSelected(true);
-          }
-          else
-          {
-            aaConEnabled.setSelected(false);
-          }
-        }
-
-        @Override
-        public void menuDeselected(MenuEvent arg0)
-        {
-          // TODO Auto-generated method stub
-
-        }
-
-        @Override
-        public void menuCanceled(MenuEvent arg0)
-        {
-          // TODO Auto-generated method stub
-
-        }
-      });
       aaConEnabled.setToolTipText("<html><p>"
               + JvSwingUtils.wrapTooltip(aaui.getAAconToggleTooltip() + "</p>")
               + "</html>");
@@ -361,7 +326,7 @@ public class SequenceAnnotationWSClient extends Jws2Client
 
       });
       wsmenu.add(aaConEnabled);
-      JMenuItem modifyParams = new JMenuItem(aaui.getAAeditSettings());
+      final JMenuItem modifyParams = new JMenuItem(aaui.getAAeditSettings());
       modifyParams.setToolTipText("<html><p>"
               + JvSwingUtils.wrapTooltip(aaui.getAAeditSettingsTooltip() + "</p>")
               + "</html>");
@@ -375,6 +340,49 @@ public class SequenceAnnotationWSClient extends Jws2Client
         }
       });
       wsmenu.add(modifyParams);
+      wsmenu.addMenuListener(new MenuListener()
+      {
+
+        @Override
+        public void menuSelected(MenuEvent arg0)
+        {
+          // TODO: refactor to the implementing class.
+          if (alignFrame.getViewport().getAlignment()
+                  .isNucleotide() ? aaui.isNa() : aaui.isPr()) {
+            aaConEnabled.setEnabled(true);
+            modifyParams.setEnabled(true);
+          }
+          else {
+            aaConEnabled.setEnabled(false);
+            modifyParams.setEnabled(false);
+          }
+          List<AlignCalcWorkerI> aaconClient = alignFrame.getViewport()
+                  .getCalcManager()
+                  .getRegisteredWorkersOfClass(aaui.getClient());
+          if (aaconClient != null && aaconClient.size() > 0)
+          {
+            aaConEnabled.setSelected(true);
+          }
+          else
+          {
+            aaConEnabled.setSelected(false);
+          }
+        }
+
+        @Override
+        public void menuDeselected(MenuEvent arg0)
+        {
+          // TODO Auto-generated method stub
+
+        }
+
+        @Override
+        public void menuCanceled(MenuEvent arg0)
+        {
+          // TODO Auto-generated method stub
+
+        }
+      });
 
     }
     return true;
index 3923bba..5907713 100644 (file)
@@ -11,7 +11,10 @@ import jalview.ws.uimodel.AlignAnalysisUIText;
 public class Jws2InstanceFactory
 {
   private static HashMap<String, AlignAnalysisUIText> aaConGUI;
-
+  private static String category_rewrite(String cat_name)
+  {
+    return (cat_name != null && cat_name.equals("Prediction")) ? "Secondary Structure Prediction" : cat_name;
+  }
   private static void init()
   {
     if (aaConGUI == null)
@@ -40,7 +43,7 @@ public class Jws2InstanceFactory
           JABAService service)
   {
     init();
-    Jws2Instance svc = new Jws2Instance(jwsservers, serviceType, name,
+    Jws2Instance svc = new Jws2Instance(jwsservers, serviceType, category_rewrite(name),
             description, service);
     
     svc.aaui = aaConGUI.get(serviceType.toString());
index fea4496..2647f18 100755 (executable)
@@ -1268,7 +1268,7 @@ and any path to a file to save to the file]]></string>
                                                                <string><![CDATA[664]]></string>
                                                        </property>
                                                        <property name="sourceName">
-                                                               <string><![CDATA[min-jabaws-client-3.0.0.jar]]></string>
+                                                               <string><![CDATA[min-jabaws-client-2.1.0.jar]]></string>
                                                        </property>
                                                        <property name="overrideUnixPermissions">
                                                                <boolean>false</boolean>
@@ -1286,7 +1286,7 @@ and any path to a file to save to the file]]></string>
                                                                <boolean>true</boolean>
                                                        </property>
                                                        <property name="destinationName">
-                                                               <string><![CDATA[min-jabaws-client-3.0.0.jar]]></string>
+                                                               <string><![CDATA[min-jabaws-client-2.1.0.jar]]></string>
                                                        </property>
                                                        <property name="fileSize">
                                                                <long>133065</long>