X-Git-Url: http://source.jalview.org/gitweb/?a=blobdiff_plain;f=src%2Fjalview%2Fhmmer%2FHMMSearch.java;h=d4c9656c56334a955024379c641fd66122d6cac3;hb=f024e66fd13fc3c4fb251291b69c36ad9ff5c8d8;hp=b4e7427c8f7c95b64b658c13772c03d2602350dd;hpb=ff638b98db095ffd7dc792f5d91fe5a0de6fc2ba;p=jalview.git diff --git a/src/jalview/hmmer/HMMSearch.java b/src/jalview/hmmer/HMMSearch.java index b4e7427..d4c9656 100644 --- a/src/jalview/hmmer/HMMSearch.java +++ b/src/jalview/hmmer/HMMSearch.java @@ -1,5 +1,6 @@ package jalview.hmmer; +import jalview.bin.Cache; import jalview.datamodel.Alignment; import jalview.datamodel.AlignmentAnnotation; import jalview.datamodel.AlignmentI; @@ -15,12 +16,14 @@ import jalview.util.FileUtils; import jalview.util.MessageManager; import jalview.ws.params.ArgumentI; import jalview.ws.params.simple.BooleanOption; +import jalview.ws.params.simple.Option; import java.io.BufferedReader; import java.io.File; import java.io.FileReader; import java.io.IOException; import java.util.ArrayList; +import java.util.Collections; import java.util.List; import java.util.Scanner; @@ -28,6 +31,8 @@ import javax.swing.JOptionPane; public class HMMSearch extends HmmerCommand { + private static final String PARAMNAME_NO_OF_RESULTS = MessageManager.getString("label.number_of_results"); + static final String HMMSEARCH = "hmmsearch"; boolean realign = false; @@ -57,15 +62,15 @@ public class HMMSearch extends HmmerCommand @Override public void run() { - HiddenMarkovModel hmm = af.getSelectedHMM(); + HiddenMarkovModel hmm = getHmmProfile(); if (hmm == null) { - JOptionPane.showMessageDialog(af, - MessageManager.getString("warn.no_selected_hmm")); + // shouldn't happen if we got this far + Cache.log.error("Error: no hmm for hmmsearch"); return; } - SequenceI hmmSeq = af.getSelectedHMMSequence(); + SequenceI hmmSeq = hmm.getConsensusSequence();// af.getSelectedHMMSequence(); long msgId = System.currentTimeMillis(); af.setProgressBar(MessageManager.getString("status.running_hmmsearch"), msgId); @@ -83,8 +88,8 @@ public class HMMSearch extends HmmerCommand boolean ran = runCommand(searchOutputFile, hitsAlignmentFile, hmmFile); if (!ran) { - JvOptionPane.showInternalMessageDialog(af, - MessageManager.getString("warn.hmmsearch_failed")); + JvOptionPane.showInternalMessageDialog(af, MessageManager + .formatMessage("warn.command_failed", "hmmsearch")); return; } @@ -155,7 +160,7 @@ public class HMMSearch extends HmmerCommand } else if (MessageManager.getString("label.seq_e_value").equals(name)) { - args.add("--incE"); + args.add("-E"); args.add(arg.getValue()); } else if (MessageManager.getString("label.seq_score").equals(name)) @@ -163,10 +168,10 @@ public class HMMSearch extends HmmerCommand args.add("-incT"); args.add(arg.getValue()); } - else if (MessageManager.getString("label.dom_e_value_desc") + else if (MessageManager.getString("label.dom_e_value") .equals(name)) { - args.add("--incdomE"); + args.add("--domE"); args.add(arg.getValue()); } else if (MessageManager.getString("label.dom_score").equals(name)) @@ -197,15 +202,16 @@ public class HMMSearch extends HmmerCommand { /* * no external database specified for search, so - * export current alignment as 'database' to search + * export current alignment as 'database' to search, + * excluding any HMM consensus sequences it contains */ databaseFile = FileUtils.createTempFile("database", ".sto"); AlignmentI al = af.getViewport().getAlignment(); AlignmentI copy = new Alignment(al); - SequenceI hmms = copy.getHmmConsensus(); - if (hmms != null) + List hmms = copy.getHmmSequences(); + for (SequenceI hmmSeq : hmms) { - copy.deleteSequence(hmms); + copy.deleteSequence(hmmSeq); } exportStockholm(copy.getSequencesArray(), databaseFile, null); // StockholmFile stoFile = new StockholmFile(copy); @@ -253,10 +259,17 @@ public class HMMSearch extends HmmerCommand hmmAndSeqs[0] = hmmSeq; System.arraycopy(seqs, 0, hmmAndSeqs, 1, seqCount); - AlignmentI alignment = new Alignment(hmmAndSeqs); - AlignFrame frame = new AlignFrame(alignment, 1, 1); - frame.setSelectedHMMSequence(hmmSeq); + /* + * and align the search results to the HMM profile + */ + AlignmentI al = new Alignment(hmmAndSeqs); + AlignFrame frame = new AlignFrame(al, 1, 1); List alignArgs = new ArrayList<>(); + String defSeq = hmmSeq.getName(); + List options = Collections.singletonList(defSeq); + Option option = new Option(MessageManager.getString("label.use_hmm"), + "", true, defSeq, defSeq, options, null); + alignArgs.add(option); if (trim) { alignArgs.add(new BooleanOption(