+ hmmFile = createTempFile("hmm", ".hmm");
+ alignmentFile = createTempFile("output", ".sto");
+ SequenceI[] array;
+ List<SequenceI> hmmSeqs = null;
+ if (group != null)
+ {
+ hmmSeqs = group.getHMMConsensusSequences();
+ array = group.getSelectionAsNewSequences(alignment);
+ }
+ else
+ {
+ hmmSeqs = alignment.getHMMConsensusSequences();
+ // todo pad gaps in an unaligned SequenceGroup as well?
+ if (!alignment.isAligned())
+ {
+ alignment.padGaps();
+ }
+ array = alignment.getSequencesArray();
+ }
+
+ if (array.length < 1)
+ {
+ if (af != null)
+ {
+ JOptionPane.showMessageDialog(af,
+ MessageManager.getString("warn.no_sequence_data"));
+ }
+ return;
+ }
+
+ /*
+ * copy over sequences excluding hmm consensus sequences
+ */
+ SequenceI[] newArr = new SequenceI[array.length - hmmSeqs.size()];
+ int index = 0;
+ for (SequenceI seq : array)
+ {
+ if (seq.isHMMConsensusSequence())
+ {
+ alignment.deleteSequence(seq);
+ }
+ else
+ {
+ newArr[index] = new Sequence(seq);
+ index++;
+ }
+ }
+
+ stashSequences(newArr);
+
+ exportStockholm(newArr, alignmentFile,
+ group != null ? group : alignment);
+
+ recoverSequences(array);
+
+ boolean ran = runCommand(alignmentFile, hmmFile, group);
+ if (!ran)
+ {
+ return;
+ }
+ importData(hmmFile, group);
+ } catch (Exception e)