X-Git-Url: http://source.jalview.org/gitweb/?a=blobdiff_plain;f=src%2Fjalview%2Fgui%2FPreferences.java;h=c8fef96f847e03f8ece4b6f51141f5ec211f3b20;hb=ef660a21d6304c84f215341a9a29e112c82119fd;hp=0546264fdd2aa03ba66050ef1679bcb6a57e14ea;hpb=f846d1d381fefac7b430554f175f8c7c41ddfe45;p=jalview.git diff --git a/src/jalview/gui/Preferences.java b/src/jalview/gui/Preferences.java index 0546264..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", "3.1b2"); - } trimTermini.setSelected(Cache.getDefault("TRIM_TERMINI", false)); @@ -1208,28 +1208,43 @@ public class Preferences extends GPreferences } 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) @@ -1285,28 +1300,51 @@ public class Preferences extends GPreferences } /** - * 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);