X-Git-Url: http://source.jalview.org/gitweb/?a=blobdiff_plain;f=src%2Fjalview%2Fhmmer%2FHMMBuildThread.java;h=24106d60e62801865f1ef599bb8087b91d95cf55;hb=6dda78dd65a8f6f25356d9fe95078afbba4eadcd;hp=2262baed476ddc4d463b62951915e9103e25af5b;hpb=e91b3faae4cde4e18a2965af05248dd3eebe578e;p=jalview.git diff --git a/src/jalview/hmmer/HMMBuildThread.java b/src/jalview/hmmer/HMMBuildThread.java index 2262bae..24106d6 100644 --- a/src/jalview/hmmer/HMMBuildThread.java +++ b/src/jalview/hmmer/HMMBuildThread.java @@ -1,15 +1,13 @@ package jalview.hmmer; -import jalview.bin.Cache; +import jalview.analysis.SeqsetUtils; import jalview.datamodel.AlignmentI; -import jalview.datamodel.HiddenMarkovModel; import jalview.datamodel.Sequence; import jalview.datamodel.SequenceGroup; import jalview.datamodel.SequenceI; import jalview.gui.AlignFrame; import jalview.gui.AlignViewport; import jalview.gui.JvOptionPane; -import jalview.gui.Preferences; import jalview.io.DataSourceType; import jalview.io.FileParse; import jalview.io.HMMFile; @@ -24,12 +22,8 @@ import java.util.List; import javax.swing.JOptionPane; -public class HMMBuildThread implements Runnable +public class HMMBuildThread extends HmmerCommand implements Runnable { - HMMERCommands cmds = new HMMERCommands(); - - AlignFrame af; - AlignViewport viewport; boolean multiJob = false; @@ -78,7 +72,6 @@ public class HMMBuildThread implements Runnable af.setProgressBar(MessageManager.getString("status.running_hmmbuild"), barID); } - cmds.HMMERFOLDER = Cache.getProperty(Preferences.HMMER_PATH); List groups = new ArrayList<>(); if (params != null) @@ -167,8 +160,7 @@ public class HMMBuildThread implements Runnable if (af != null) { - af.setProgressBar(MessageManager.getString("status.running_hmmbuild"), - barID); + af.setProgressBar("", barID); } } @@ -195,19 +187,20 @@ public class HMMBuildThread implements Runnable try { SequenceI[] array; - List seqs = null; + List hmmSeqs = null; if (forGroup) { - seqs = group.getHMMConsensusSequences(true); - if (seqs.size() > 0) + hmmSeqs = group.getHMMConsensusSequences(); + if (hmmSeqs.size() > 0) { + // todo why this test? means can't re-run hmmbuild on a group? return; } array = group.getSelectionAsNewSequences(alignment); } else { - seqs = alignment.getHMMConsensusSequences(true); + hmmSeqs = alignment.getHMMConsensusSequences(); if (!alignment.isAligned()) { alignment.padGaps(); @@ -215,8 +208,6 @@ public class HMMBuildThread implements Runnable array = alignment.getSequencesArray(); } - cmds.setHmmSeqs(seqs); - if (array.length < 1) { if (af != null) @@ -226,26 +217,33 @@ public class HMMBuildThread implements Runnable } return; } - SequenceI[] newArr = new SequenceI[array.length]; + + /* + * copy over sequences excluding hmm consensus sequences + */ + SequenceI[] newArr = new SequenceI[array.length - hmmSeqs.size()]; int index = 0; for (SequenceI seq : array) { - newArr[index] = new Sequence(seq); - index++; + if (!seq.isHMMConsensusSequence()) + { + newArr[index] = new Sequence(seq); + index++; + } } - cmds.uniquifySequences(newArr); + uniquifySequences(newArr); if (forGroup) { - cmds.exportData(newArr, stoTemp, null, null, group); + exportData(newArr, stoTemp, null, null, group); } else { - cmds.exportData(newArr, stoTemp, null, null, alignment); + exportData(newArr, stoTemp, null, null, alignment); } - jalview.analysis.SeqsetUtils.deuniquify(cmds.hash, array); + SeqsetUtils.deuniquify(hash, array); } catch (FileNotFoundException e) { @@ -289,23 +287,12 @@ public class HMMBuildThread implements Runnable */ private boolean runCommand() throws IOException, InterruptedException { - File file = new File(cmds.HMMERFOLDER + "/hmmbuild"); - if (!file.canExecute()) + String binaryPath = getCommandRoot(HMMBUILD); + if (binaryPath == null) { - file = new File(cmds.HMMERFOLDER + "/hmmbuild.exe"); - { - if (!file.canExecute()) - { - if (af != null) - { - JvOptionPane.showInternalMessageDialog(af, - MessageManager.getString("warn.hmmbuild_failed")); - } - return false; - } - } + return false; } - String command = cmds.HMMERFOLDER + cmds.HMMBUILD + cmds.SPACE; + String command = binaryPath + SPACE; String name = null; if (params != null) @@ -348,19 +335,19 @@ public class HMMBuildThread implements Runnable } - command += "-n " + name.replace(' ', '_') + cmds.SPACE; + command += "-n " + name.replace(' ', '_') + SPACE; if (!alignment.isNucleotide()) { - command += cmds.FORCEAMINO; // TODO check for rna + command += FORCEAMINO; // TODO check for rna } else { - command += cmds.FORCEDNA; + command += FORCEDNA; } - command += hmmTemp.getAbsolutePath() + cmds.SPACE - + stoTemp.getAbsolutePath() + cmds.SPACE; - return cmds.runCommand(command); + command += hmmTemp.getAbsolutePath() + SPACE + stoTemp.getAbsolutePath() + + SPACE; + return runCommand(command); } /** @@ -376,7 +363,6 @@ public class HMMBuildThread implements Runnable SequenceI[] seqs = file.getSeqsAsArray(); SequenceI seq = seqs[0]; seq.createDatasetSequence(); - HiddenMarkovModel hmm = file.getHMM(); if (group != null) { seq.insertCharAt(0, group.getStartRes(), '-');