X-Git-Url: http://source.jalview.org/gitweb/?a=blobdiff_plain;f=src%2Fjalview%2Fhmmer%2FHMMBuild.java;h=0c47c1dd8011fc05ef682d1f39fb113439eb94ac;hb=0d519ae0c45b0b9962b4589e84c262a71bb2f346;hp=b99ad2e6ed5b93fe47a43f5b76adc59b00e0184c;hpb=ff638b98db095ffd7dc792f5d91fe5a0de6fc2ba;p=jalview.git diff --git a/src/jalview/hmmer/HMMBuild.java b/src/jalview/hmmer/HMMBuild.java index b99ad2e..0c47c1d 100644 --- a/src/jalview/hmmer/HMMBuild.java +++ b/src/jalview/hmmer/HMMBuild.java @@ -5,6 +5,7 @@ import jalview.bin.Cache; import jalview.datamodel.Alignment; import jalview.datamodel.AlignmentI; import jalview.datamodel.AnnotatedCollectionI; +import jalview.datamodel.ResidueCount; import jalview.datamodel.SequenceGroup; import jalview.datamodel.SequenceI; import jalview.gui.AlignFrame; @@ -96,20 +97,26 @@ public class HMMBuild extends HmmerCommand AlignViewportI viewport) { List runBuildFor = new ArrayList<>(); + boolean foundArg = false; + for (ArgumentI arg : params) { String name = arg.getName(); if (MessageManager.getString("label.hmmbuild_for").equals(name)) { + foundArg = true; String value = arg.getValue(); + if (MessageManager.getString("label.alignment").equals(value)) { - runBuildFor.add(alignment); + runBuildFor.add(viewport.getAlignmentView(false) + .getVisibleAlignment('-')); } else if (MessageManager.getString("label.groups_and_alignment") .equals(value)) { - runBuildFor.add(alignment); + runBuildFor.add(viewport.getAlignmentView(false) + .getVisibleAlignment('-')); runBuildFor.addAll(viewport.getAlignment().getGroups()); } else if (MessageManager.getString("label.groups").equals(value)) @@ -134,6 +141,15 @@ public class HMMBuild extends HmmerCommand } } } + + /* + * default is to build for the whole alignment + */ + if (!foundArg) + { + runBuildFor.add(alignment); + } + return runBuildFor; } @@ -171,12 +187,18 @@ public class HMMBuild extends HmmerCommand else { SequenceI[] sel = ((SequenceGroup) ac) - .getSelectionAsNewSequences((AlignmentI) ac.getContext()); + .getSelectionAsNewSequences((AlignmentI) ac.getContext()); for (SequenceI seq : sel) { - copy.add(seq); + if (seq != null) + { + copy.add(seq); + } } } + // TODO rather than copy alignment data we should anonymize in situ - + // export/File import could use anonymization hash to reinstate references + // at import level ? SequenceI[] copyArray = copy.toArray(new SequenceI[copy.size()]); Hashtable sequencesHash = stashSequences(copyArray); @@ -188,6 +210,8 @@ public class HMMBuild extends HmmerCommand boolean ran = runCommand(alignmentFile, hmmFile, ac); if (!ran) { + JvOptionPane.showInternalMessageDialog(af, MessageManager + .formatMessage("warn.command_failed", "hmmbuild")); return; } importData(hmmFile, ac); @@ -208,33 +232,6 @@ public class HMMBuild extends HmmerCommand } /** - * A helper method that deletes any HMM consensus sequence from the given - * collection, and from the parent alignment if ac is a subgroup - * - * @param ac - */ - void deleteHmmSequences(AnnotatedCollectionI ac) - { - SequenceI hmmSeq = ac.getHmmConsensus(); - if (hmmSeq != null) - { - if (ac instanceof SequenceGroup) - { - ((SequenceGroup) ac).deleteSequence(hmmSeq, false); - AnnotatedCollectionI context = ac.getContext(); - if (context != null && context instanceof AlignmentI) - { - ((AlignmentI) context).deleteSequence(hmmSeq); - } - } - else - { - ((AlignmentI) ac).deleteSequence(hmmSeq); - } - } - } - - /** * Constructs and executes the hmmbuild command as a separate process * * @param sequencesFile @@ -312,8 +309,8 @@ public class HMMBuild extends HmmerCommand args.add(ARG_DNA); } - args.add(getFilePath(hmmFile)); - args.add(getFilePath(sequencesFile)); + args.add(getFilePath(hmmFile, true)); + args.add(getFilePath(sequencesFile, true)); return runCommand(args); } @@ -341,6 +338,11 @@ public class HMMBuild extends HmmerCommand new FileParse(hmmFile.getAbsolutePath(), DataSourceType.FILE)); SequenceI hmmSeq = file.getHMM().getConsensusSequence(); + + + ResidueCount counts = new ResidueCount(alignment.getSequences()); + hmmSeq.getHMM().setBackgroundFrequencies(counts); + if (hmmSeq == null) { // hmmbuild failure not detected earlier @@ -359,17 +361,10 @@ public class HMMBuild extends HmmerCommand alignment.insertSequenceAt(topIndex, hmmSeq); ac.setSeqrep(hmmSeq); grp.addSequence(hmmSeq, false); - grp.setHmmConsensus(hmmSeq); } else { alignment.insertSequenceAt(0, hmmSeq); - alignment.setHmmConsensus(hmmSeq); - } - - if (af.getSelectedHMM() == null) - { - af.setSelectedHMMSequence(hmmSeq); } } }