3 import jalview.bin.Cache;
4 import jalview.datamodel.AlignmentI;
5 import jalview.datamodel.HiddenMarkovModel;
6 import jalview.datamodel.SequenceI;
7 import jalview.gui.AlignFrame;
8 import jalview.gui.Preferences;
9 import jalview.io.DataSourceType;
10 import jalview.io.FileFormat;
11 import jalview.util.MessageManager;
14 import java.io.FileNotFoundException;
15 import java.io.IOException;
18 public class HMMBuildThread implements Runnable
20 HMMERCommands cmds = new HMMERCommands();
26 Map<Integer, SequenceI> hmmSeqs;
28 public HMMBuildThread(AlignFrame af)
31 alignment = af.getViewport().getAlignment();
37 barID = System.currentTimeMillis();
38 af.setProgressBar(MessageManager.getString("status.running_hmmbuild"),
40 cmds.HMMERFOLDER = Cache.getProperty(Preferences.HMMER_PATH);
43 cmds.HMMBUFFER = File.createTempFile("hmm", ".hmm").getAbsolutePath()
45 cmds.ALIGNMENTBUFFER = File.createTempFile("output", ".sto")
46 .getAbsolutePath() + cmds.SPACE;
47 } catch (IOException e1)
56 hmmSeqs = alignment.getHMMConsensusSequences(true);
57 cmds.exportData(alignment, true, false,
58 new HiddenMarkovModel());
59 } catch (FileNotFoundException e)
61 // TODO Auto-generated catch block
68 } catch (IOException | InterruptedException e)
70 // TODO Auto-generated catch block
76 } catch (IOException | InterruptedException e)
78 // TODO Auto-generated catch block
86 af.setProgressBar(MessageManager.getString("status.running_hmmbuild"),
94 private void runCommand() throws IOException, InterruptedException
96 final String command = cmds.HMMERFOLDER + cmds.HMMBUILD + cmds.NAME
97 + af.getName() + cmds.SPACE + cmds.HMMBUFFER
98 + cmds.ALIGNMENTBUFFER;
99 cmds.runCommand(command);
102 private void importData() throws IOException, InterruptedException
104 af.loadJalviewDataFile(cmds.HMMBUFFER, DataSourceType.FILE,
105 FileFormat.HMMER3, null);
106 for (Map.Entry<Integer, SequenceI> entry : hmmSeqs.entrySet())
108 SequenceI seq = entry.getValue();
109 Integer pos = entry.getKey();
110 cmds.addHMMConsensusSequence(af, seq, pos);
112 af.alignPanel.alignmentChanged();