X-Git-Url: http://source.jalview.org/gitweb/?a=blobdiff_plain;f=src%2Fjalview%2Fgui%2FPreferences.java;h=c8fef96f847e03f8ece4b6f51141f5ec211f3b20;hb=46406ae21c62b964714ce136c9d692985c17211d;hp=0e418bd23a4dbda0cbdd7aea7a0c36542e024527;hpb=a32dfc833642269f2d72f56219657c9f7ec40592;p=jalview.git diff --git a/src/jalview/gui/Preferences.java b/src/jalview/gui/Preferences.java index 0e418bd..c8fef96 100755 --- a/src/jalview/gui/Preferences.java +++ b/src/jalview/gui/Preferences.java @@ -22,8 +22,14 @@ package jalview.gui; 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; @@ -50,7 +56,6 @@ import java.awt.event.ActionEvent; 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; @@ -692,11 +697,6 @@ public class Preferences extends GPreferences { frame.updateHMMERStatus(hmmerStatus); } - if (hmmerStatus) - { - String ver = getHMMERVersion(); - Cache.setProperty("HMMER_VERSION", ver); - } trimTermini.setSelected(Cache.getDefault("TRIM_TERMINI", false)); @@ -1193,10 +1193,10 @@ public class Preferences extends GPreferences { int missing = 0; String message = ""; - String path = hmmerPath.getText().trim(); - if (path.length() > 0) + String folder = hmmerPath.getText().trim(); + if (folder.length() > 0) { - File f = new File(path); + File f = new File(folder); if (!f.exists()) { if (showDialog) @@ -1208,35 +1208,43 @@ public class Preferences extends GPreferences } return false; } - - File hmmbuild = new File(path + "/binaries/hmmbuild.exe"); - { - if (!hmmbuild.canExecute()) + 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++; } - File hmmalign = new File(path + "/binaries/hmmalign.exe"); - { - if (!hmmalign.canExecute()) + + if (canExecute(folder + "/hmmalign")) { - message += MessageManager.getString("label.hmmalign_not_found") - + "\n"; - missing++; + } + else + { + message += MessageManager.getString("label.hmmalign_not_found") + + "\n"; + missing++; } - File hmmsearch = new File(path + "/binaries/hmmsearch.exe"); - { - if (!hmmsearch.canExecute()) + + 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) @@ -1265,28 +1273,78 @@ public class Preferences extends GPreferences } } + return true; + } + + /** + * Checks if a file can be executed + * + * @param path + * the path to the file + * @return + */ + public boolean canExecute(String path) + { + File file = new File(path); + if (!file.canExecute()) + { + file = new File(path + ".exe"); + { + if (!file.canExecute()) + { + return false; + } + } } return true; } - private String getHMMERVersion() + /** + * Runs hmmbuild to check if it is working. While doing this it parses the + * version of HMMER. + * + * @param frame + * @return + */ + public boolean validateHMMBuild(AlignmentI alignment) { - File file = new File(hmmerPath.getText() + "/release-notes.txt"); - Scanner scanner = null; - try + HMMBuildThread hmmbuild = new HMMBuildThread(alignment); + hmmbuild.hmmbuildWaitTillComplete(); + SequenceI hmmSeq = alignment.getSequenceAt(1); + HiddenMarkovModel hmm; + if (hmmSeq.isHMMConsensusSequence() && hmmSeq.getHMM() != null) + { + hmm = hmmSeq.getHMM(); + + if (hmm.getNumberOfSymbols() < 1) + { + return false; + } + } + else { - scanner = new Scanner(file); - } catch (IOException e) + return false; + } + + String header = hmm.getFileHeader(); + if (header == null) { - e.printStackTrace(); - return null; + return false; } - scanner.next(); - String res = scanner.next(); - scanner.close(); - return res; + 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);