X-Git-Url: http://source.jalview.org/gitweb/?a=blobdiff_plain;ds=sidebyside;f=src%2Fjalview%2Fhmmer%2FHMMAlign.java;h=464203447708a62bbecbd176bb1bd8e0e63bf321;hb=bedfa8b30d527da43c403b96ab45aec8ab317555;hp=942342ccaaf39f4816d2ad224fa552619014b1fe;hpb=4389a166735bf1203894abdf3cf7dd57c4856dbc;p=jalview.git diff --git a/src/jalview/hmmer/HMMAlign.java b/src/jalview/hmmer/HMMAlign.java index 942342c..4642034 100644 --- a/src/jalview/hmmer/HMMAlign.java +++ b/src/jalview/hmmer/HMMAlign.java @@ -14,6 +14,7 @@ import jalview.gui.JvOptionPane; import jalview.gui.SplitFrame; import jalview.io.DataSourceType; import jalview.io.StockholmFile; +import jalview.util.FileUtils; import jalview.util.MessageManager; import jalview.viewmodel.seqfeatures.FeatureRendererSettings; import jalview.ws.params.ArgumentI; @@ -34,8 +35,6 @@ public class HMMAlign extends HmmerCommand private final AlignmentI dataset; - private AlignmentView msa; - /** * Constructor for the HMMAlignThread * @@ -65,18 +64,17 @@ public class HMMAlign extends HmmerCommand @Override public void run() { - HiddenMarkovModel hmm = af.getSelectedHMM(); - if (hmm == null) - { - System.err.println("Can't run hmmalign as no HMM profile selected"); - return; - } + HiddenMarkovModel hmm = getHmmProfile(); long msgId = System.currentTimeMillis(); af.setProgressBar(MessageManager.getString("status.running_hmmalign"), msgId); - prepareAlignment(); - SequenceI[][] subAlignments = msa.getVisibleContigs('-'); + + // ensure alignments are the same length + alignment.padGaps(); + + AlignmentView msa = af.gatherSequencesForAlignment(); + SequenceI[][] subAlignments = msa.getVisibleContigs(alignment.getGapCharacter()); List allOrders = new ArrayList<>(); @@ -87,9 +85,9 @@ public class HMMAlign extends HmmerCommand Hashtable sequencesHash = stashSequences(seqs); try { - File modelFile = createTempFile("hmm", ".hmm"); - File alignmentFile = createTempFile("output", ".sto"); - File resultFile = createTempFile("input", ".sto"); + File modelFile = FileUtils.createTempFile("hmm", ".hmm"); + File alignmentFile = FileUtils.createTempFile("output", ".sto"); + File resultFile = FileUtils.createTempFile("input", ".sto"); exportStockholm(seqs, alignmentFile.getAbsoluteFile(), null); exportHmm(hmm, modelFile.getAbsoluteFile()); @@ -97,8 +95,8 @@ public class HMMAlign extends HmmerCommand boolean ran = runCommand(modelFile, alignmentFile, resultFile); if (!ran) { - JvOptionPane.showInternalMessageDialog(af, - MessageManager.getString("warn.hmmalign_failed")); + JvOptionPane.showInternalMessageDialog(af, MessageManager + .formatMessage("warn.command_failed", "hmmalign")); return; } @@ -115,7 +113,8 @@ public class HMMAlign extends HmmerCommand job++; } - displayResults(allResults, allOrders); + String title = "hmmalign to " + hmm.getConsensusSequence().getName(); + displayResults(allResults, allOrders, msa, title); af.setProgressBar("", msgId); } @@ -134,8 +133,7 @@ public class HMMAlign extends HmmerCommand * @throws IOException */ private boolean runCommand(File modelFile, File alignmentFile, - File resultFile) - throws IOException + File resultFile) throws IOException { String command = getCommandPath(HMMALIGN); if (command == null) @@ -157,9 +155,9 @@ public class HMMAlign extends HmmerCommand } } args.add("-o"); - args.add(resultFile.getAbsolutePath()); - args.add(modelFile.getAbsolutePath()); - args.add(alignmentFile.getAbsolutePath()); + args.add(getFilePath(resultFile, true)); + args.add(getFilePath(modelFile, true)); + args.add(getFilePath(alignmentFile, true)); return runCommand(args); } @@ -177,7 +175,7 @@ public class HMMAlign extends HmmerCommand private SequenceI[] importData(File resultFile, List allOrders) throws IOException { - StockholmFile file = new StockholmFile(resultFile.getAbsolutePath(), + StockholmFile file = new StockholmFile(getFilePath(resultFile, false), DataSourceType.FILE); SequenceI[] result = file.getSeqsAsArray(); AlignmentOrder msaorder = new AlignmentOrder(result); @@ -188,26 +186,21 @@ public class HMMAlign extends HmmerCommand } /** - * Gathers the sequences in preparation for the alignment. - */ - private void prepareAlignment() - { - msa = af.gatherSequencesForAlignment(); - } - - /** * Displays the results of all 'jobs' in a new frame * * @param allResults * * @param allOrders + * @param msa + * @param title */ private void displayResults(SequenceI[][] allResults, - List allOrders) + List allOrders, AlignmentView msa, String title) { AlignmentOrder[] arrOrders = allOrders .toArray(new AlignmentOrder[allOrders.size()]); - Object[] newview = msa.getUpdatedView(allResults, arrOrders, '-'); + Object[] newview = msa.getUpdatedView(allResults, arrOrders, + alignment.getGapCharacter()); SequenceI[] seqs = (SequenceI[]) newview[0]; HiddenColumns hidden = (HiddenColumns) newview[1]; Alignment al = new Alignment(seqs); @@ -217,7 +210,7 @@ public class HMMAlign extends HmmerCommand al.setDataset(dataset); } - displayInNewFrame(al, allOrders, hidden); + displayInNewFrame(al, allOrders, hidden, title); } /** @@ -230,12 +223,14 @@ public class HMMAlign extends HmmerCommand * run * @param hidden * Hidden columns in the previous alignment + * @param title */ private void displayInNewFrame(AlignmentI al, - List alorders, HiddenColumns hidden) + List alorders, HiddenColumns hidden, String title) { AlignFrame alignFrame = new AlignFrame(al, hidden, AlignFrame.DEFAULT_WIDTH, AlignFrame.DEFAULT_HEIGHT); + alignFrame.setTitle(title); FeatureRendererSettings featureSettings = af.getFeatureRenderer() .getSettings();