JAL-1759 merge from develop
[jalview.git] / test / jalview / analysis / scoremodels / FeatureScoreModelTest.java
1 package jalview.analysis.scoremodels;
2
3 import jalview.datamodel.AlignmentI;
4 import jalview.datamodel.SequenceFeature;
5 import jalview.datamodel.SequenceI;
6 import jalview.gui.AlignFrame;
7 import jalview.io.FileLoader;
8 import jalview.io.FormatAdapter;
9
10 import org.testng.AssertJUnit;
11 import org.testng.annotations.Test;
12
13 public class FeatureScoreModelTest
14 {
15   public static String alntestFile = "FER1_MESCR/72-76 DVYIL\nFER1_SPIOL/71-75 DVYIL\nFER3_RAPSA/21-25 DVYVL\nFER1_MAIZE/73-77 DVYIL\n";
16
17   int[] sf1 = new int[]
18   { 74, 74, 73, 73, 23, 23, -1, -1 };
19
20   int[] sf2 = new int[]
21   { -1, -1, 74, 75, -1, -1, 76, 77 };
22
23   int[] sf3 = new int[]
24   { -1, -1, -1, -1, -1, -1, 76, 77 };
25
26   @Test(groups ={ "Functional" })
27   public void testFeatureScoreModel() throws Exception
28   {
29     AlignFrame alf = new FileLoader(false).LoadFileWaitTillLoaded(alntestFile,
30             FormatAdapter.PASTE);
31     AlignmentI al = alf.getViewport().getAlignment();
32     AssertJUnit.assertEquals(4, al.getHeight());
33     AssertJUnit.assertEquals(5, al.getWidth());
34     for (int i = 0; i < 4; i++)
35     {
36       SequenceI ds = al.getSequenceAt(i).getDatasetSequence();
37       if (sf1[i * 2] > 0)
38       {
39         ds.addSequenceFeature(new SequenceFeature("sf1", "sf1", "sf1",
40                 sf1[i * 2], sf1[i * 2 + 1], "sf1"));
41       }
42       if (sf2[i * 2] > 0)
43       {
44         ds.addSequenceFeature(new SequenceFeature("sf2", "sf2", "sf2",
45                 sf2[i * 2], sf2[i * 2 + 1], "sf2"));
46       }
47       if (sf3[i * 2] > 0)
48       {
49         ds.addSequenceFeature(new SequenceFeature("sf3", "sf3", "sf3",
50                 sf3[i * 2], sf3[i * 2 + 1], "sf3"));
51       }
52     }
53     alf.setShowSeqFeatures(true);
54     alf.getFeatureRenderer().setVisible("sf1");
55     alf.getFeatureRenderer().setVisible("sf2");
56     alf.getFeatureRenderer().setVisible("sf3");
57     alf.getFeatureRenderer().findAllFeatures(true);
58     AssertJUnit.assertEquals("Number of feature types", 3, alf
59             .getFeatureRenderer().getDisplayedFeatureTypes().length);
60     AssertJUnit.assertTrue(alf.getCurrentView().areFeaturesDisplayed());
61     FeatureScoreModel fsm = new FeatureScoreModel();
62     AssertJUnit.assertTrue(fsm.configureFromAlignmentView(alf.getCurrentView()
63             .getAlignPanel()));
64     alf.selectAllSequenceMenuItem_actionPerformed(null);
65     float[][] dm = fsm.findDistances(alf.getViewport().getAlignmentView(
66             true));
67     AssertJUnit.assertTrue("FER1_MESCR should be identical with RAPSA (2)",
68             dm[0][2] == 0f);
69     AssertJUnit.assertTrue(
70             "FER1_MESCR should be further from SPIOL (1) than it is from RAPSA (2)",
71             dm[0][1] > dm[0][2]);
72
73   }
74 }