JAL-2629 fix file loading issues on Mac
[jalview.git] / src / jalview / hmmer / HMMBuildThread.java
index d1039f9..5d55f84 100644 (file)
@@ -2,6 +2,7 @@ package jalview.hmmer;
 
 import jalview.bin.Cache;
 import jalview.datamodel.AlignmentI;
+import jalview.datamodel.Sequence;
 import jalview.datamodel.SequenceGroup;
 import jalview.datamodel.SequenceI;
 import jalview.gui.AlignFrame;
@@ -9,6 +10,7 @@ import jalview.gui.JvOptionPane;
 import jalview.gui.Preferences;
 import jalview.io.DataSourceType;
 import jalview.io.FileFormat;
+import jalview.io.FileLoader;
 import jalview.util.MessageManager;
 
 import java.io.File;
@@ -23,9 +25,9 @@ public class HMMBuildThread implements Runnable
   HMMERCommands cmds = new HMMERCommands();
   AlignFrame af;
   AlignmentI alignment;
-
   SequenceGroup group;
 
+  boolean forGroup = false;
   boolean canRun = true;
 
   File hmmTemp = null;
@@ -40,6 +42,7 @@ public class HMMBuildThread implements Runnable
     if (af.getViewport().getSelectionGroup() != null)
     {
       group = af.getViewport().getSelectionGroup();
+      forGroup = true;
     }
     alignment = af.getViewport().getAlignment();
 
@@ -73,14 +76,13 @@ public class HMMBuildThread implements Runnable
     {
     try
     {
+        SequenceI[] array;
         List<SequenceI> seqs = alignment
                 .getHMMConsensusSequences(true);
         cmds.setHmmSeqs(seqs);
-        if (group != null)
+        if (forGroup)
         {
-          SequenceI[] array = group.getSelectionAsNewSequences(alignment);
-
-          cmds.exportData(array, stoTemp, null, null);
+          array = group.getSelectionAsNewSequences(alignment);
         }
         else
         {
@@ -88,9 +90,21 @@ public class HMMBuildThread implements Runnable
           {
             alignment.padGaps();
           }
-          cmds.exportData(alignment.getSequencesArray(), stoTemp, null,
-                  null);
+          array = alignment.getSequencesArray();
+        }
+
+        SequenceI[] newArr = new SequenceI[array.length];
+        int index = 0;
+        for (SequenceI seq : array)
+        {
+          newArr[index] = new Sequence(seq);
+          index++;
         }
+
+        cmds.uniquifySequences(newArr);
+        cmds.exportData(newArr, stoTemp, null, null);
+        jalview.analysis.SeqsetUtils.deuniquify(cmds.hash, array);
+
     } catch (FileNotFoundException e)
     {
       // TODO Auto-generated catch block
@@ -135,13 +149,26 @@ public class HMMBuildThread implements Runnable
   
   private boolean runCommand() throws IOException, InterruptedException
   {
-    File file = new File(cmds.HMMERFOLDER + "/binaries/hmmbuild.exe");
+    File file = new File(cmds.HMMERFOLDER + "/binaries/hmmbuild");
     if (!file.canExecute())
     {
       return false;
     }
-    String command = cmds.HMMERFOLDER + cmds.HMMBUILD + cmds.NAME
-            + af.getName() + cmds.SPACE;
+    String command = cmds.HMMERFOLDER + cmds.HMMBUILD + cmds.NAME;
+    if (forGroup)
+    {
+      command += group.getName();
+    }
+    else
+    {
+      String name = af.getName();
+      if (name == null)
+      {
+        name = "Alignment";
+      }
+      command += name;
+    }
+    command += cmds.SPACE;
     if (!alignment.isNucleotide())
     {
       command += cmds.FORCEAMINO; // TODO check for rna
@@ -159,8 +186,10 @@ public class HMMBuildThread implements Runnable
   private void importData() throws IOException, InterruptedException
   {
     cmds.addHMMConsensusSequences(af);
-    af.loadJalviewDataFile(hmmTemp.getAbsolutePath(), DataSourceType.FILE,
-            FileFormat.HMMER3, null);
+    FileLoader loader = new FileLoader();
+    loader.LoadFileOntoAlignmentWaitTillLoaded(af.getViewport(),
+            hmmTemp.getAbsolutePath(), DataSourceType.FILE,
+            FileFormat.HMMER3);
     hmmTemp.delete();
     stoTemp.delete();
   }