JAL-2629 add ability to select hmmer binaries folder
[jalview.git] / src / jalview / gui / AlignFrame.java
index 05b1e33..9b5681b 100644 (file)
@@ -63,7 +63,8 @@ import jalview.datamodel.SequenceGroup;
 import jalview.datamodel.SequenceI;
 import jalview.gui.ColourMenuHelper.ColourChangeListener;
 import jalview.gui.ViewSelectionMenu.ViewSetProvider;
-import jalview.hmmer.HMMERCommands;
+import jalview.hmmer.HMMAlignThread;
+import jalview.hmmer.HMMBuildThread;
 import jalview.io.AlignmentProperties;
 import jalview.io.AnnotationFile;
 import jalview.io.BioJsHTMLOutput;
@@ -92,7 +93,6 @@ import jalview.schemes.TCoffeeColourScheme;
 import jalview.util.MessageManager;
 import jalview.viewmodel.AlignmentViewport;
 import jalview.viewmodel.ViewportRanges;
-import jalview.workers.InformationThread;
 import jalview.ws.DBRefFetcher;
 import jalview.ws.DBRefFetcher.FetchFinishedListenerI;
 import jalview.ws.jws1.Discoverer;
@@ -146,6 +146,7 @@ import javax.swing.JInternalFrame;
 import javax.swing.JLayeredPane;
 import javax.swing.JMenu;
 import javax.swing.JMenuItem;
+import javax.swing.JOptionPane;
 import javax.swing.JScrollPane;
 import javax.swing.SwingUtilities;
 
@@ -339,6 +340,11 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener,
     init();
   }
 
+  public void setIsRecurring(boolean status)
+  {
+    recurring = status;
+  }
+
   /**
    * initalise the alignframe from the underlying viewport data and the
    * configurations
@@ -501,6 +507,9 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener,
   {
     hmmerMenu.removeAll();
 
+    hmmerMenu.add(changeHMMERLocation);
+    hmmerMenu.addSeparator();
+
     hmmerMenu.add(autoAlignSeqs);
     hmmerMenu.addSeparator();
 
@@ -1044,8 +1053,7 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener,
   public void hmmBuild_actionPerformed(ActionEvent e)
           throws IOException, InterruptedException
   {
-
-    HMMERCommands.hmmBuild(this);
+    new Thread(new HMMBuildThread(this)).start();
     alignPanel.repaint();
 
   }
@@ -1054,13 +1062,19 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener,
   public void hmmAlign_actionPerformed(ActionEvent e)
           throws IOException, InterruptedException
   {
-    SequenceI seq = getViewport().getAlignment()
-            .getHMMConsensusSequences(false).get(0);
-    HMMERCommands.hmmAlign(this, true, seq.getHMM());
+    new Thread(new HMMAlignThread(this, true)).start();
     alignPanel.repaint();
   }
 
   @Override
+  public void changeHMMERLocation_actionPerformed(ActionEvent e)
+  {
+    String location = JOptionPane.showInputDialog(
+            MessageManager.getString("label.enter_location"));
+    Cache.setProperty(Preferences.HMMER_PATH, location);
+  }
+
+  @Override
   public void autoAlignSeqs_actionPerformed(boolean autoAlignSeqs)
   {
     autoAlignNewSequences = autoAlignSeqs;
@@ -4727,20 +4741,11 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener,
           }
           else if (FileFormat.HMMER3.equals(format))
           {
-            HMMFile hmmFile = new HMMFile(new FileParse(file, sourceType)); // TODO
-                                                                            // need
-                                                                            // to
-                                                                            // follow
-                                                                            // standard
-                                                                            // pipeline
-            hmmFile.parse();
+            HMMFile hmmFile = new HMMFile(new FileParse(file, sourceType));
             HiddenMarkovModel hmm = hmmFile.getHMM();
             SequenceI hmmSeq = hmm.initHMMSequence(this, 0);
             getViewport().initInformation(hmmSeq);
-            new Thread(new InformationThread(getViewport(),
-                    getViewport().getAlignPanel())
-            {
-            }).start();
+            getViewport().updateInformation(alignPanel);
 
             isAnnotation = true;
 
@@ -4769,6 +4774,10 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener,
           else
           {
             new FileLoader().LoadFile(viewport, file, sourceType, format);
+            if (autoAlignNewSequences && !recurring)
+            {
+              new Thread(new HMMAlignThread(this, false)).start();
+            }
           }
         }
       }
@@ -4798,14 +4807,6 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener,
                       + (format != null ? "(parsing as '" + format
                               + "' file)" : ""), oom, Desktop.desktop);
     }
-    if (autoAlignNewSequences && !recurring)
-    {
-      recurring = true;
-      HiddenMarkovModel hmm = getViewport().getAlignment()
-              .getHMMConsensusSequences(false).get(0).getHMM();
-      HMMERCommands.hmmAlign(this, false, hmm);
-    }
-    recurring = false;
   }
 
   /**
@@ -5761,4 +5762,6 @@ class PrintThread extends Thread
       }
     }
   }
+
+
 }