package jalview.analysis.scoremodels; import jalview.datamodel.AlignmentI; import jalview.datamodel.SequenceFeature; import jalview.datamodel.SequenceI; import jalview.gui.AlignFrame; import jalview.io.FileLoader; import jalview.io.FormatAdapter; import org.testng.AssertJUnit; import org.testng.annotations.Test; public class FeatureScoreModelTest { 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"; int[] sf1 = new int[] { 74, 74, 73, 73, 23, 23, -1, -1 }; int[] sf2 = new int[] { -1, -1, 74, 75, -1, -1, 76, 77 }; int[] sf3 = new int[] { -1, -1, -1, -1, -1, -1, 76, 77 }; @Test(groups ={ "Functional" }) public void testFeatureScoreModel() throws Exception { AlignFrame alf = new FileLoader(false).LoadFileWaitTillLoaded(alntestFile, FormatAdapter.PASTE); AlignmentI al = alf.getViewport().getAlignment(); AssertJUnit.assertEquals(4, al.getHeight()); AssertJUnit.assertEquals(5, al.getWidth()); for (int i = 0; i < 4; i++) { SequenceI ds = al.getSequenceAt(i).getDatasetSequence(); if (sf1[i * 2] > 0) { ds.addSequenceFeature(new SequenceFeature("sf1", "sf1", "sf1", sf1[i * 2], sf1[i * 2 + 1], "sf1")); } if (sf2[i * 2] > 0) { ds.addSequenceFeature(new SequenceFeature("sf2", "sf2", "sf2", sf2[i * 2], sf2[i * 2 + 1], "sf2")); } if (sf3[i * 2] > 0) { ds.addSequenceFeature(new SequenceFeature("sf3", "sf3", "sf3", sf3[i * 2], sf3[i * 2 + 1], "sf3")); } } alf.setShowSeqFeatures(true); alf.getFeatureRenderer().setVisible("sf1"); alf.getFeatureRenderer().setVisible("sf2"); alf.getFeatureRenderer().setVisible("sf3"); alf.getFeatureRenderer().findAllFeatures(true); AssertJUnit.assertEquals("Number of feature types", 3, alf .getFeatureRenderer().getDisplayedFeatureTypes().length); AssertJUnit.assertTrue(alf.getCurrentView().areFeaturesDisplayed()); FeatureScoreModel fsm = new FeatureScoreModel(); AssertJUnit.assertTrue(fsm.configureFromAlignmentView(alf.getCurrentView() .getAlignPanel())); alf.selectAllSequenceMenuItem_actionPerformed(null); float[][] dm = fsm.findDistances(alf.getViewport().getAlignmentView( true)); AssertJUnit.assertTrue("FER1_MESCR should be identical with RAPSA (2)", dm[0][2] == 0f); AssertJUnit.assertTrue( "FER1_MESCR should be further from SPIOL (1) than it is from RAPSA (2)", dm[0][1] > dm[0][2]); } }