X-Git-Url: http://source.jalview.org/gitweb/?a=blobdiff_plain;f=src%2Fjalview%2Fhmmer%2FHMMBuild.java;h=88f28dd325c00872a10ade1ea0167cc1fd2fcde6;hb=a82f1e47eef845557e95e61116e6b34bdd3242f3;hp=d5c17fc8935b8fa69dbb32ed5ad7dd4e2154a3a8;hpb=5e22c6b15dc429055036c19fcfc48c16d37d7ad0;p=jalview.git diff --git a/src/jalview/hmmer/HMMBuild.java b/src/jalview/hmmer/HMMBuild.java index d5c17fc..88f28dd 100644 --- a/src/jalview/hmmer/HMMBuild.java +++ b/src/jalview/hmmer/HMMBuild.java @@ -4,7 +4,9 @@ import jalview.api.AlignViewportI; import jalview.bin.Cache; import jalview.datamodel.Alignment; import jalview.datamodel.AlignmentI; +import jalview.datamodel.AlignmentView; import jalview.datamodel.AnnotatedCollectionI; +import jalview.datamodel.ResidueCount; import jalview.datamodel.SequenceGroup; import jalview.datamodel.SequenceI; import jalview.gui.AlignFrame; @@ -96,30 +98,38 @@ 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.addAll(viewport.getAlignment().getGroups()); + AlignmentView av = viewport.getAlignmentView(true); + runBuildFor.add(av.getVisibleAlignment('-')); + runBuildFor.addAll(av.getVisibleGroups('-')); } else if (MessageManager.getString("label.groups").equals(value)) { - runBuildFor.addAll(viewport.getAlignment().getGroups()); + AlignmentView av = viewport.getAlignmentView(false); + runBuildFor.addAll(av.getVisibleGroups('-')); } else if (MessageManager.getString("label.selected_group") .equals(value)) { - runBuildFor.add(viewport.getSelectionGroup()); + AlignmentView av = viewport.getAlignmentView(true); + runBuildFor.add(av.getVisibleAlignment('-')); } } else if (MessageManager.getString("label.use_reference") @@ -134,6 +144,15 @@ public class HMMBuild extends HmmerCommand } } } + + /* + * default is to build for the whole alignment + */ + if (!foundArg) + { + runBuildFor.add(alignment); + } + return runBuildFor; } @@ -171,13 +190,15 @@ 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); } } - + // 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); @@ -314,8 +335,8 @@ public class HMMBuild extends HmmerCommand args.add(ARG_DNA); } - args.add(hmmFile.getAbsolutePath()); - args.add(sequencesFile.getAbsolutePath()); + args.add(getFilePath(hmmFile, true)); + args.add(getFilePath(sequencesFile, true)); return runCommand(args); } @@ -342,6 +363,8 @@ public class HMMBuild extends HmmerCommand HMMFile file = new HMMFile( new FileParse(hmmFile.getAbsolutePath(), DataSourceType.FILE)); SequenceI hmmSeq = file.getHMM().getConsensusSequence(); + ResidueCount counts = new ResidueCount(alignment.getSequences()); + hmmSeq.getHMM().setBackgroundFrequencies(counts); if (hmmSeq == null) {