import jalview.datamodel.SequenceI;
import jalview.gui.AlignFrame;
import jalview.gui.Desktop;
+import jalview.gui.JvOptionPane;
import jalview.gui.Preferences;
import jalview.gui.SplitFrame;
import jalview.io.DataSourceType;
@Override
public void run()
{
- if (af.getViewport().getSelectedHMM() == null)
+ if (af.getSelectedHMM() == null)
{
JOptionPane.showMessageDialog(af,
MessageManager.getString("warn.no_selected_hmm"));
}
else
{
- hmm = af.getViewport().getSelectedHMM();
+ hmm = af.getSelectedHMM();
}
barID = System.currentTimeMillis();
- af.setProgressBar(MessageManager.getString("status.running_hmmbuild"),
+ af.setProgressBar(MessageManager.getString("status.running_hmmalign"),
barID);
cmds.HMMERFOLDER = Cache.getProperty(Preferences.HMMER_PATH);
}
try
{
- runCommand();
+ boolean ran = runCommand();
+ if (!ran)
+ {
+ JvOptionPane.showInternalMessageDialog(af,
+ MessageManager.getString("warn.hmmalign_failed"));
+ return;
+ }
} catch (IOException | InterruptedException e)
{
e.printStackTrace();
inputTemp.deleteOnExit();
}
- private void runCommand() throws IOException, InterruptedException
+ private boolean runCommand() throws IOException, InterruptedException
{
+ File file = new File(cmds.HMMERFOLDER + "/binaries/hmmalign.exe");
+ if (!file.canExecute())
+ {
+ return false;
+ }
String command = cmds.HMMERFOLDER + cmds.HMMALIGN;
if (!hmm.getFileHeader().contains("HMMER3/f"))
{
command += cmds.ALLCOL;
}
- command += cmds.TRIM + " -o" + inputTemp.getAbsolutePath() + cmds.SPACE
+ boolean trim = true;
+ String bool = Cache.getProperty("TRIM_TERMINI");
+ if ("false".equals(bool))
+ {
+ trim = false;
+ }
+ if (trim)
+ {
+ command += cmds.TRIM;
+ }
+ command += " -o" + inputTemp.getAbsolutePath() + cmds.SPACE
+ hmmTemp.getAbsolutePath() + cmds.SPACE
+ outTemp.getAbsolutePath();
- cmds.runCommand(command);
+ return cmds.runCommand(command);
}
private void importData(int index)
DataSourceType.FILE);
SequenceI[] result = file.getSeqsAsArray();
AlignmentOrder msaorder = new AlignmentOrder(result);
- // always recover the order - makes parseResult()'s life easier.
jalview.analysis.AlignmentSorter.recoverOrder(result);
jalview.analysis.SeqsetUtils.deuniquify(cmds.hash, result);
allOrders.add(msaorder);
allResults[index] = result;
-
- /*
- if (newFrame)
- {
- FileLoader loader = new FileLoader();
- AlignFrame aFrame = new AlignFrame(new Alignment(new SequenceI[1]),
- AlignFrame.DEFAULT_WIDTH, AlignFrame.DEFAULT_HEIGHT);
- Desktop.addInternalFrame(aFrame, aFrame.getTitle(),
- AlignFrame.DEFAULT_WIDTH, AlignFrame.DEFAULT_HEIGHT);
- aFrame.setTitle(
- af.getName() + "Aligned to " + hmm.getName() + "'s HMM");
- af.getViewport().setAlignment(null);
-
- aFrame.loadJalviewDataFile(inputTemp.getAbsolutePath(),
- DataSourceType.FILE, FileFormat.Stockholm, null);
-
-
-
- Map<Integer, SequenceI> copy = new HashMap<>(
- hmmSeqs);
- addSeqs(aFrame, copy);
- SequenceI seq = aFrame.getViewport().getAlignment()
- .getSequenceAt(0);
- seq.getHMM().mapToReferenceAnnotation(aFrame, seq);
- addSeqs(af, hmmSeqs);
- }
- else
- {
- af.getViewport().getAlignment().getSequences().clear();
- af.setIsRecurring(true);
- af.loadJalviewDataFile(inputTemp.getAbsolutePath(),
- DataSourceType.FILE, FileFormat.Stockholm, null);
- af.setIsRecurring(false);
- addSeqs(af, hmmSeqs);
- }
- */
hmmTemp.delete();
outTemp.delete();
inputTemp.delete();