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;
AlignViewportI viewport)
{
List<AnnotatedCollectionI> 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")
}
}
}
+
+ /*
+ * default is to build for the whole alignment
+ */
+ if (!foundArg)
+ {
+ runBuildFor.add(alignment);
+ }
+
return runBuildFor;
}
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);
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);
}
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)
{