X-Git-Url: http://source.jalview.org/gitweb/?a=blobdiff_plain;f=test%2Fjalview%2Fanalysis%2Fscoremodels%2FFeatureDistanceModelTest.java;h=92f15429a87778b1fb22cd891e4561bed9021693;hb=57738a1f3c19b1c3a00bd3ac5108f8cd0af32f99;hp=6df8a66b4561e24460b8c713cc412d375b289163;hpb=7b38a52bf6f0bc32e5d91f0716ad435b7027933b;p=jalview.git diff --git a/test/jalview/analysis/scoremodels/FeatureDistanceModelTest.java b/test/jalview/analysis/scoremodels/FeatureDistanceModelTest.java index 6df8a66..92f1542 100644 --- a/test/jalview/analysis/scoremodels/FeatureDistanceModelTest.java +++ b/test/jalview/analysis/scoremodels/FeatureDistanceModelTest.java @@ -23,6 +23,7 @@ package jalview.analysis.scoremodels; import static org.testng.Assert.assertEquals; import static org.testng.Assert.assertTrue; +import jalview.api.analysis.ScoreModelI; import jalview.api.analysis.SimilarityParamsI; import jalview.datamodel.Alignment; import jalview.datamodel.AlignmentI; @@ -74,8 +75,8 @@ public class FeatureDistanceModelTest */ public AlignFrame getTestAlignmentFrame() { - AlignFrame alf = new FileLoader(false).LoadFileWaitTillLoaded( - alntestFile, DataSourceType.PASTE); + AlignFrame alf = new FileLoader(false) + .LoadFileWaitTillLoaded(alntestFile, DataSourceType.PASTE); AlignmentI al = alf.getViewport().getAlignment(); Assert.assertEquals(al.getHeight(), 4); Assert.assertEquals(al.getWidth(), 5); @@ -84,18 +85,18 @@ public class FeatureDistanceModelTest 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")); + ds.addSequenceFeature(new SequenceFeature("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")); + ds.addSequenceFeature(new SequenceFeature("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")); + ds.addSequenceFeature(new SequenceFeature("sf3", "sf3", sf3[i * 2], + sf3[i * 2 + 1], "sf3")); } } alf.setShowSeqFeatures(true); @@ -103,8 +104,9 @@ public class FeatureDistanceModelTest alf.getFeatureRenderer().setVisible("sf2"); alf.getFeatureRenderer().setVisible("sf3"); alf.getFeatureRenderer().findAllFeatures(true); - Assert.assertEquals(alf.getFeatureRenderer().getDisplayedFeatureTypes() - .size(), 3, "Number of feature types"); + Assert.assertEquals( + alf.getFeatureRenderer().getDisplayedFeatureTypes().size(), 3, + "Number of feature types"); assertTrue(alf.getCurrentView().areFeaturesDisplayed()); return alf; } @@ -113,13 +115,12 @@ public class FeatureDistanceModelTest public void testFeatureScoreModel() throws Exception { AlignFrame alf = getTestAlignmentFrame(); - FeatureDistanceModel fsm = new FeatureDistanceModel(); - assertTrue(fsm.configureFromAlignmentView(alf.getCurrentView() - .getAlignPanel())); + ScoreModelI sm = new FeatureDistanceModel(); + sm = ScoreModels.getInstance().getScoreModel(sm.getName(), + alf.getCurrentView().getAlignPanel()); alf.selectAllSequenceMenuItem_actionPerformed(null); - MatrixI dm = fsm.findDistances( - alf.getViewport().getAlignmentView(true), + MatrixI dm = sm.findDistances(alf.getViewport().getAlignmentView(true), SimilarityParams.Jalview); assertEquals(dm.getValue(0, 2), 0d, "FER1_MESCR (0) should be identical with RAPSA (2)"); @@ -133,12 +134,11 @@ public class FeatureDistanceModelTest AlignFrame alf = getTestAlignmentFrame(); // hiding first two columns shouldn't affect the tree alf.getViewport().hideColumns(0, 1); - FeatureDistanceModel fsm = new FeatureDistanceModel(); - assertTrue(fsm.configureFromAlignmentView(alf.getCurrentView() - .getAlignPanel())); + ScoreModelI sm = new FeatureDistanceModel(); + sm = ScoreModels.getInstance().getScoreModel(sm.getName(), + alf.getCurrentView().getAlignPanel()); alf.selectAllSequenceMenuItem_actionPerformed(null); - MatrixI dm = fsm.findDistances( - alf.getViewport().getAlignmentView(true), + MatrixI dm = sm.findDistances(alf.getViewport().getAlignmentView(true), SimilarityParams.Jalview); assertEquals(dm.getValue(0, 2), 0d, "FER1_MESCR (0) should be identical with RAPSA (2)"); @@ -153,26 +153,25 @@ public class FeatureDistanceModelTest // hide columns and check tree changes alf.getViewport().hideColumns(3, 4); alf.getViewport().hideColumns(0, 1); - FeatureDistanceModel fsm = new FeatureDistanceModel(); - assertTrue(fsm.configureFromAlignmentView(alf.getCurrentView() - .getAlignPanel())); + // getName() can become static in Java 8 + ScoreModelI sm = new FeatureDistanceModel(); + sm = ScoreModels.getInstance().getScoreModel(sm.getName(), + alf.getCurrentView().getAlignPanel()); alf.selectAllSequenceMenuItem_actionPerformed(null); - MatrixI dm = fsm.findDistances( - alf.getViewport().getAlignmentView(true), + MatrixI dm = sm.findDistances(alf.getViewport().getAlignmentView(true), SimilarityParams.Jalview); - assertEquals( - dm.getValue(0, 2), - 0d, + assertEquals(dm.getValue(0, 2), 0d, "After hiding last two columns FER1_MESCR (0) should still be identical with RAPSA (2)"); - assertEquals( - dm.getValue(0, 1), - 0d, + assertEquals(dm.getValue(0, 1), 0d, "After hiding last two columns FER1_MESCR (0) should now also be identical with SPIOL (1)"); for (int s = 0; s < 3; s++) { - assertTrue(dm.getValue(s, 3) > 0d, "After hiding last two columns " - + alf.getViewport().getAlignment().getSequenceAt(s).getName() - + "(" + s + ") should still be distinct from FER1_MAIZE (3)"); + assertTrue(dm.getValue(s, 3) > 0d, + "After hiding last two columns " + + alf.getViewport().getAlignment().getSequenceAt(s) + .getName() + + "(" + s + + ") should still be distinct from FER1_MAIZE (3)"); } } @@ -194,26 +193,33 @@ public class FeatureDistanceModelTest assertTrue(sf.isContactFeature()); af.refreshFeatureUI(true); af.getFeatureRenderer().setAllVisible(Arrays.asList("disulphide bond")); - Assert.assertEquals(af.getFeatureRenderer().getDisplayedFeatureTypes() - .size(), 1, "Should be just one feature type displayed"); + Assert.assertEquals( + af.getFeatureRenderer().getDisplayedFeatureTypes().size(), 1, + "Should be just one feature type displayed"); // step through and check for pointwise feature presence/absence - Assert.assertEquals(af.getFeatureRenderer().findFeaturesAtRes(aseq, 1) - .size(), 0); + Assert.assertEquals( + af.getFeatureRenderer().findFeaturesAtColumn(aseq, 1).size(), + 0); // step through and check for pointwise feature presence/absence - Assert.assertEquals(af.getFeatureRenderer().findFeaturesAtRes(aseq, 2) - .size(), 1); + Assert.assertEquals( + af.getFeatureRenderer().findFeaturesAtColumn(aseq, 2).size(), + 1); // step through and check for pointwise feature presence/absence - Assert.assertEquals(af.getFeatureRenderer().findFeaturesAtRes(aseq, 3) - .size(), 0); + Assert.assertEquals( + af.getFeatureRenderer().findFeaturesAtColumn(aseq, 3).size(), + 0); // step through and check for pointwise feature presence/absence - Assert.assertEquals(af.getFeatureRenderer().findFeaturesAtRes(aseq, 4) - .size(), 0); + Assert.assertEquals( + af.getFeatureRenderer().findFeaturesAtColumn(aseq, 4).size(), + 0); // step through and check for pointwise feature presence/absence - Assert.assertEquals(af.getFeatureRenderer().findFeaturesAtRes(aseq, 5) - .size(), 1); + Assert.assertEquals( + af.getFeatureRenderer().findFeaturesAtColumn(aseq, 5).size(), + 1); // step through and check for pointwise feature presence/absence - Assert.assertEquals(af.getFeatureRenderer().findFeaturesAtRes(aseq, 6) - .size(), 0); + Assert.assertEquals( + af.getFeatureRenderer().findFeaturesAtColumn(aseq, 6).size(), + 0); } @Test(groups = { "Functional" }) @@ -237,36 +243,34 @@ public class FeatureDistanceModelTest * 20120 (two features of the same type doesn't affect score) * giving an average (pairwise distance) of 5/5 or 1.0 */ - s1.addSequenceFeature(new SequenceFeature("domain", null, 1, 3, 0f, - null)); - s1.addSequenceFeature(new SequenceFeature("variant", null, 2, 4, 0f, - null)); - s1.addSequenceFeature(new SequenceFeature("variant", null, 3, 5, 0f, - null)); - s2.addSequenceFeature(new SequenceFeature("domain", null, 2, 4, 0f, - null)); - s2.addSequenceFeature(new SequenceFeature("variant", null, 1, 2, 0f, - null)); - s2.addSequenceFeature(new SequenceFeature("variant", null, 5, 5, 0f, - null)); + s1.addSequenceFeature( + new SequenceFeature("domain", null, 1, 3, 0f, null)); + s1.addSequenceFeature( + new SequenceFeature("variant", null, 2, 4, 0f, null)); + s1.addSequenceFeature( + new SequenceFeature("variant", null, 3, 5, 0f, null)); + s2.addSequenceFeature( + new SequenceFeature("domain", null, 2, 4, 0f, null)); + s2.addSequenceFeature( + new SequenceFeature("variant", null, 1, 2, 0f, null)); + s2.addSequenceFeature( + new SequenceFeature("variant", null, 5, 5, 0f, null)); alf.setShowSeqFeatures(true); alf.getFeatureRenderer().findAllFeatures(true); - FeatureDistanceModel fsm = new FeatureDistanceModel(); - assertTrue(fsm.configureFromAlignmentView(alf.getCurrentView() - .getAlignPanel())); + ScoreModelI sm = new FeatureDistanceModel(); + sm = ScoreModels.getInstance().getScoreModel(sm.getName(), + alf.getCurrentView().getAlignPanel()); alf.selectAllSequenceMenuItem_actionPerformed(null); - MatrixI distances = fsm.findDistances(alf.getViewport() - .getAlignmentView(true), SimilarityParams.Jalview); + AlignmentView alignmentView = alf.getViewport().getAlignmentView(true); + MatrixI distances = sm.findDistances(alignmentView, + SimilarityParams.Jalview); assertEquals(distances.width(), 2); assertEquals(distances.height(), 2); assertEquals(distances.getValue(0, 0), 0d); assertEquals(distances.getValue(1, 1), 0d); - // these left to fail pending resolution of - // JAL-2424 (computing score as 5/6, should be 5/5) - // see also PCATest.testComputeSimilarity_featureDistances() assertEquals(distances.getValue(0, 1), 1d, "expected identical pairs. (check normalisation for similarity score)"); assertEquals(distances.getValue(1, 0), 1d); @@ -282,9 +286,10 @@ public class FeatureDistanceModelTest AlignViewport viewport = af.getViewport(); AlignmentView view = viewport.getAlignmentView(false); - FeatureDistanceModel sm = new FeatureDistanceModel(); - sm.configureFromAlignmentView(af.alignPanel); - + ScoreModelI sm = new FeatureDistanceModel(); + sm = ScoreModels.getInstance().getScoreModel(sm.getName(), + af.alignPanel); + /* * feature distance model always normalises by region width * gap-gap is always included (but scores zero) @@ -301,11 +306,10 @@ public class FeatureDistanceModelTest assertEquals(distances.getValue(1, 1), 0d); assertEquals(distances.getValue(0, 1), 13d / 6); // should be 13d/6 assertEquals(distances.getValue(1, 0), 13d / 6); - + /* * exclude gaps * score = 3 + 3 + 0 + 0 + 0 + 0 = 6/6 - // FIXME out by 1 error in cpwidth JAL-2424 - dividing by 7 */ params = new SimilarityParams(true, true, false, true); distances = sm.findDistances(view, params); @@ -338,12 +342,16 @@ public class FeatureDistanceModelTest SequenceI s1 = new Sequence("s1", "FR K S"); SequenceI s2 = new Sequence("s2", "FS L"); - s1.addSequenceFeature(new SequenceFeature("chain", null, 1, 4, 0f, null)); - s1.addSequenceFeature(new SequenceFeature("domain", null, 1, 4, 0f, - null)); - s2.addSequenceFeature(new SequenceFeature("chain", null, 1, 3, 0f, null)); - s2.addSequenceFeature(new SequenceFeature("metal", null, 1, 3, 0f, null)); - s2.addSequenceFeature(new SequenceFeature("Pfam", null, 1, 3, 0f, null)); + s1.addSequenceFeature( + new SequenceFeature("chain", null, 1, 4, 0f, null)); + s1.addSequenceFeature( + new SequenceFeature("domain", null, 1, 4, 0f, null)); + s2.addSequenceFeature( + new SequenceFeature("chain", null, 1, 3, 0f, null)); + s2.addSequenceFeature( + new SequenceFeature("metal", null, 1, 3, 0f, null)); + s2.addSequenceFeature( + new SequenceFeature("Pfam", null, 1, 3, 0f, null)); AlignmentI al = new Alignment(new SequenceI[] { s1, s2 }); AlignFrame af = new AlignFrame(al, 300, 300); af.setShowSeqFeatures(true);