3 import static org.testng.Assert.assertEquals;
4 import static org.testng.Assert.assertNotNull;
5 import static org.testng.Assert.assertTrue;
6 import static org.testng.Assert.fail;
8 import jalview.bin.Jalview;
9 import jalview.datamodel.AlignmentI;
10 import jalview.datamodel.HiddenMarkovModel;
11 import jalview.datamodel.SequenceI;
12 import jalview.gui.AlignFrame;
13 import jalview.gui.Desktop;
14 import jalview.ws.params.ArgumentI;
16 import java.io.IOException;
17 import java.net.MalformedURLException;
18 import java.util.ArrayList;
20 import org.testng.annotations.AfterClass;
21 import org.testng.annotations.BeforeClass;
22 import org.testng.annotations.Test;
24 public class HMMERTest {
28 @BeforeClass(alwaysRun = true)
29 public void setUpBeforeClass() throws Exception
33 { "-noquestionnaire", "-nonews", "-props",
34 "test/jalview/hmmer/testProps.jvprops", "-open",
35 "examples/uniref50.fa" });
36 // FastaFile file = null;
37 // file = new FastaFile(
38 // new FileParse("examples/uniref50.fa", DataSourceType.FILE));
39 // SequenceI[] seqs = file.getSeqsAsArray();
40 // AlignmentI al = new Alignment(seqs);
41 // frame = new AlignFrame(al, 150, 20);
42 frame = Desktop.getAlignFrames()[0];
45 @AfterClass(alwaysRun = true)
46 public static void tearDownAfterClass() throws Exception
48 Desktop.instance.closeAll_actionPerformed(null);
52 * Test with a dependency on locally installed hmmbuild binaries
54 * @throws MalformedURLException
57 @Test(groups = "External")
58 public void testHMMBuildThenHMMAlign()
59 throws MalformedURLException, IOException
62 * run hmmbuild - not the side-effect of selecting the HMM
63 * sequence that gets added to the alignment
66 HiddenMarkovModel hmm = frame.getSelectedHMM();
69 * now run hmmalign - with respect to the select HMM profile
74 public void testHMMBuild()
76 HMMBuildThread thread = new HMMBuildThread(frame,
77 new ArrayList<ArgumentI>());
78 thread.hmmbuildWaitTillComplete();
80 SequenceI seq = frame.getViewport().getAlignment().getSequenceAt(0);
81 HiddenMarkovModel hmm = seq.getHMM();
84 assertEquals(hmm.getLength().intValue(), 148);
85 assertEquals(hmm.getAlphabetType(), "amino");
86 assertEquals(hmm.getName(), "Alignment");
87 assertEquals(hmm.getEffectiveNumberOfSequences(), 0.648193, 0.0001);
88 assertEquals(hmm.getConsensusAtAlignColumn(15), 's');
91 public void testHMMAlign()
93 HMMAlignThread thread = new HMMAlignThread(frame,
94 new ArrayList<ArgumentI>());
95 thread.hmmalignWaitTillComplete();
97 AlignFrame[] alignFrames = Desktop.getAlignFrames();
98 if (alignFrames == null)
100 fail("No align frame loaded");
104 * now have the original align frame, and another for realigned sequences
106 assertEquals(alignFrames.length, 2);
107 AlignmentI original = alignFrames[0].getViewport().getAlignment();
108 assertNotNull(original);
109 AlignmentI realigned = alignFrames[1].getViewport().getAlignment();
110 assertNotNull(realigned);
111 assertNotNull(original.getHMMConsensusSequences());
112 assertNotNull(realigned.getHMMConsensusSequences());
114 SequenceI ferCapan = original.findName("FER_CAPAN");
115 assertTrue(ferCapan.getSequenceAsString().startsWith("MA------SVSAT"));
117 SequenceI ferCapanRealigned = realigned.findName("FER_CAPAN");
118 assertTrue(ferCapanRealigned.getSequenceAsString()
119 .startsWith("-------m-A----SVSAT"));