+++ /dev/null
-/*
- * Jalview - A Sequence Alignment Editor and Viewer ($$Version-Rel$$)
- * Copyright (C) $$Year-Rel$$ The Jalview Authors
- *
- * This file is part of Jalview.
- *
- * Jalview is free software: you can redistribute it and/or
- * modify it under the terms of the GNU General Public License
- * as published by the Free Software Foundation, either version 3
- * of the License, or (at your option) any later version.
- *
- * Jalview is distributed in the hope that it will be useful, but
- * WITHOUT ANY WARRANTY; without even the implied warranty
- * of MERCHANTABILITY or FITNESS FOR A PARTICULAR
- * PURPOSE. See the GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with Jalview. If not, see <http://www.gnu.org/licenses/>.
- * The Jalview Authors are detailed in the 'AUTHORS' file.
- */
-package jalview.analysis.scoremodels;
-
-import jalview.datamodel.AlignmentI;
-import jalview.datamodel.SequenceFeature;
-import jalview.datamodel.SequenceI;
-import jalview.gui.AlignFrame;
-import jalview.gui.JvOptionPane;
-import jalview.io.DataSourceType;
-import jalview.io.FileLoader;
-
-import java.util.Arrays;
-
-import org.testng.Assert;
-import org.testng.annotations.BeforeClass;
-import org.testng.annotations.Test;
-
-public class FeatureScoreModelTest
-{
-
- @BeforeClass(alwaysRun = true)
- public void setUpJvOptionPane()
- {
- JvOptionPane.setInteractiveMode(false);
- JvOptionPane.setMockResponse(JvOptionPane.CANCEL_OPTION);
- }
-
- 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 };
-
- public AlignFrame getTestAlignmentFrame()
- {
- AlignFrame alf = new FileLoader(false).LoadFileWaitTillLoaded(
- alntestFile, DataSourceType.PASTE);
- AlignmentI al = alf.getViewport().getAlignment();
- Assert.assertEquals(al.getHeight(), 4);
- Assert.assertEquals(al.getWidth(), 5);
- 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);
- Assert.assertEquals(alf.getFeatureRenderer().getDisplayedFeatureTypes()
- .size(), 3, "Number of feature types");
- Assert.assertTrue(alf.getCurrentView().areFeaturesDisplayed());
- return alf;
- }
-
- @Test(groups = { "Functional" })
- public void testFeatureScoreModel() throws Exception
- {
- AlignFrame alf = getTestAlignmentFrame();
- FeatureScoreModel fsm = new FeatureScoreModel();
- Assert.assertTrue(fsm.configureFromAlignmentView(alf.getCurrentView()
- .getAlignPanel()));
- alf.selectAllSequenceMenuItem_actionPerformed(null);
- float[][] dm = fsm.findDistances(alf.getViewport().getAlignmentView(
- true));
- Assert.assertTrue(dm[0][2] == 0f,
- "FER1_MESCR (0) should be identical with RAPSA (2)");
- Assert.assertTrue(dm[0][1] > dm[0][2],
- "FER1_MESCR (0) should be further from SPIOL (1) than it is from RAPSA (2)");
- }
-
- @Test(groups = { "Functional" })
- public void testFeatureScoreModel_hiddenFirstColumn() throws Exception
- {
- AlignFrame alf = getTestAlignmentFrame();
- // hiding first two columns shouldn't affect the tree
- alf.getViewport().hideColumns(0, 1);
- FeatureScoreModel fsm = new FeatureScoreModel();
- Assert.assertTrue(fsm.configureFromAlignmentView(alf.getCurrentView()
- .getAlignPanel()));
- alf.selectAllSequenceMenuItem_actionPerformed(null);
- float[][] dm = fsm.findDistances(alf.getViewport().getAlignmentView(
- true));
- Assert.assertTrue(dm[0][2] == 0f,
- "FER1_MESCR (0) should be identical with RAPSA (2)");
- Assert.assertTrue(dm[0][1] > dm[0][2],
- "FER1_MESCR (0) should be further from SPIOL (1) than it is from RAPSA (2)");
- }
-
- @Test(groups = { "Functional" })
- public void testFeatureScoreModel_HiddenColumns() throws Exception
- {
- AlignFrame alf = getTestAlignmentFrame();
- // hide columns and check tree changes
- alf.getViewport().hideColumns(3, 4);
- alf.getViewport().hideColumns(0, 1);
- FeatureScoreModel fsm = new FeatureScoreModel();
- Assert.assertTrue(fsm.configureFromAlignmentView(alf.getCurrentView()
- .getAlignPanel()));
- alf.selectAllSequenceMenuItem_actionPerformed(null);
- float[][] dm = fsm.findDistances(alf.getViewport().getAlignmentView(
- true));
- Assert.assertTrue(
- dm[0][2] == 0f,
- "After hiding last two columns FER1_MESCR (0) should still be identical with RAPSA (2)");
- Assert.assertTrue(
- dm[0][1] == 0f,
- "After hiding last two columns FER1_MESCR (0) should now also be identical with SPIOL (1)");
- for (int s = 0; s < 3; s++)
- {
- Assert.assertTrue(dm[s][3] > 0f, "After hiding last two columns "
- + alf.getViewport().getAlignment().getSequenceAt(s).getName()
- + "(" + s + ") should still be distinct from FER1_MAIZE (3)");
- }
- }
-
- /**
- * Check findFeatureAt doesn't return contact features except at contact
- * points TODO:move to under the FeatureRendererModel test suite
- */
- @Test(groups = { "Functional" })
- public void testFindFeatureAt_PointFeature() throws Exception
- {
- String alignment = "a CCCCCCGGGGGGCCCCCC\n" + "b CCCCCCGGGGGGCCCCCC\n"
- + "c CCCCCCGGGGGGCCCCCC\n";
- AlignFrame af = new jalview.io.FileLoader(false)
- .LoadFileWaitTillLoaded(alignment, DataSourceType.PASTE);
- SequenceI aseq = af.getViewport().getAlignment().getSequenceAt(0);
- SequenceFeature sf = null;
- sf = new SequenceFeature("disulphide bond", "", 2, 5, Float.NaN, "");
- aseq.addSequenceFeature(sf);
- Assert.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");
- // step through and check for pointwise feature presence/absence
- Assert.assertEquals(af.getFeatureRenderer().findFeaturesAtRes(aseq, 1)
- .size(), 0);
- // step through and check for pointwise feature presence/absence
- Assert.assertEquals(af.getFeatureRenderer().findFeaturesAtRes(aseq, 2)
- .size(), 1);
- // step through and check for pointwise feature presence/absence
- Assert.assertEquals(af.getFeatureRenderer().findFeaturesAtRes(aseq, 3)
- .size(), 0);
- // step through and check for pointwise feature presence/absence
- Assert.assertEquals(af.getFeatureRenderer().findFeaturesAtRes(aseq, 4)
- .size(), 0);
- // step through and check for pointwise feature presence/absence
- Assert.assertEquals(af.getFeatureRenderer().findFeaturesAtRes(aseq, 5)
- .size(), 1);
- // step through and check for pointwise feature presence/absence
- Assert.assertEquals(af.getFeatureRenderer().findFeaturesAtRes(aseq, 6)
- .size(), 0);
- }
-
-}