import jalview.analysis.AnnotationSorter.SequenceAnnotationOrder;
import jalview.bin.Cache;
+import jalview.datamodel.Alignment;
+import jalview.datamodel.AlignmentI;
+import jalview.datamodel.HiddenMarkovModel;
+import jalview.datamodel.Sequence;
+import jalview.datamodel.SequenceI;
import jalview.gui.Help.HelpId;
import jalview.gui.StructureViewer.ViewerType;
+import jalview.hmmer.HMMBuildThread;
import jalview.io.FileFormatI;
import jalview.io.JalviewFileChooser;
import jalview.io.JalviewFileView;
import java.awt.event.ActionListener;
import java.awt.event.MouseEvent;
import java.io.File;
-import java.io.IOException;
import java.util.ArrayList;
import java.util.List;
import java.util.Scanner;
{
frame.updateHMMERStatus(hmmerStatus);
}
- if (hmmerStatus)
- {
- // String ver = getHMMERVersion();
- Cache.setProperty("HMMER_VERSION", "3.1b2");
- }
trimTermini.setSelected(Cache.getDefault("TRIM_TERMINI", false));
}
return false;
}
- if (!canExecute(folder + "/hmmbuild"))
+ AlignmentI alignment = new Alignment(
+ new SequenceI[]
+ { new Sequence("test", "WLWL", 0, 3) });
+ if (canExecute(folder + "/hmmbuild"))
{
- message += MessageManager.getString("label.hmmbuild_not_found")
- + "\n";
- missing++;
+ validateHMMBuild(alignment);
}
+ else
+ {
+ message += MessageManager.getString("label.hmmbuild_not_found")
+ + "\n";
+ missing++;
+ }
- if (!canExecute(folder + "/hmmalign"))
+ if (canExecute(folder + "/hmmalign"))
{
- message += MessageManager.getString("label.hmmalign_not_found")
- + "\n";
- missing++;
+
}
+ else
+ {
+ message += MessageManager.getString("label.hmmalign_not_found")
+ + "\n";
+ missing++;
+ }
- if (!canExecute(folder + "/hmmsearch"))
+ if (canExecute(folder + "/hmmsearch"))
{
- message += MessageManager.getString("label.hmmsearch_not_found")
- + "\n";
- missing++;
+
}
+ else
+ {
+ message += MessageManager.getString("label.hmmsearch_not_found")
+ + "\n";
+ missing++;
+ }
}
if (missing > 0)
}
/**
- * Gets the current version of hmmer
+ * Runs hmmbuild to check if it is working. While doing this it parses the
+ * version of HMMER.
*
+ * @param frame
* @return
*/
- private String getHMMERVersion()
+ public boolean validateHMMBuild(AlignmentI alignment)
{
- File file = new File(hmmerPath.getText() + "/release-notes");
- Scanner scanner = null;
- try
+ HMMBuildThread hmmbuild = new HMMBuildThread(alignment);
+ hmmbuild.hmmbuildWaitTillComplete();
+ SequenceI hmmSeq = alignment.getSequenceAt(1);
+ HiddenMarkovModel hmm;
+ if (hmmSeq.isHMMConsensusSequence() && hmmSeq.getHMM() != null)
{
- scanner = new Scanner(file);
- } catch (IOException e)
+ hmm = hmmSeq.getHMM();
+
+ if (hmm.getNumberOfSymbols() < 1)
+ {
+ return false;
+ }
+ }
+ else
{
- e.printStackTrace();
- return null;
+ return false;
}
- scanner.next();
- String res = scanner.next();
- scanner.close();
- return res;
+
+ String header = hmm.getFileHeader();
+ if (header == null)
+ {
+ return false;
+ }
+ else
+ {
+ Scanner scanner = new Scanner(header);
+ scanner.next();
+ String string = scanner.next();
+ String version = string.substring(1);
+ Cache.setProperty("HMMER_VERSION", version);
+ scanner.close();
+
+ }
+ return true;
}
+
private boolean validateHMMERPath()
{
return validateHMMERPath(true);