import org.testng.Assert;
import org.testng.annotations.BeforeClass;
+import org.testng.annotations.DataProvider;
import org.testng.annotations.Test;
// This class tests methods in Class SecondaryStructureDistanceModel
public class SecondaryStructureDistanceModelTest
{
-
- @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 };
-
- /**
- * <pre>
- * Load test alignment and add features to sequences:
- * FER1_MESCR FER1_SPIOL FER3_RAPSA FER1_MAIZE
- * sf1 X X X
- * sf2 X X
- * sf3 X
- * </pre>
- *
- * @return
- */
- 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[i * 2],
- sf1[i * 2 + 1], "sf1"));
- }
- if (sf2[i * 2] > 0)
- {
- 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[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");
- assertTrue(alf.getCurrentView().areFeaturesDisplayed());
- return alf;
- }
-
-
-
- /**
- * Verify computed distances of sequences with similar secondary structures
- */
- @Test(groups = "Functional")
- public void testFindDistances_AllSimilar()
- {
- AlignFrame af = setupAlignmentView("All Similar");
- AlignViewport viewport = af.getViewport();
- AlignmentView view = viewport.getAlignmentView(false);
-
- ScoreModelI sm = new SecondaryStructureDistanceModel();
- sm = ScoreModels.getInstance().getScoreModel(sm.getName(),
- af.alignPanel);
-
- /*
- * feature distance model always normalises by region width
- */
-
- SimilarityParamsI params = new SimilarityParams(false, true, true, true);
- params.setSecondaryStructureSource("3D Structures");
- MatrixI distances = sm.findDistances(view, params);
- assertEquals(distances.getValue(0, 0), 0d);
- assertEquals(distances.getValue(1, 1), 0d);
- assertEquals(distances.getValue(0, 1), 0d / 4);
- assertEquals(distances.getValue(1, 0), 0d / 4);
- }
-
- /**
- * Verify computed distances of sequences with partially similar secondary structures
- */
- @Test(groups = "Functional")
- public void testFindDistances_PartiallySimilar()
- {
- AlignFrame af = setupAlignmentView("Partially Similar");
- AlignViewport viewport = af.getViewport();
- AlignmentView view = viewport.getAlignmentView(false);
-
- ScoreModelI sm = new SecondaryStructureDistanceModel();
- sm = ScoreModels.getInstance().getScoreModel(sm.getName(),
- af.alignPanel);
-
- /*
- * score = 0 + 0 + 2 + 2 = 4/4
- */
- SimilarityParamsI params = new SimilarityParams(false, true, true, true);
- params.setSecondaryStructureSource("3D Structures");
- MatrixI distances = sm.findDistances(view, params);
- assertEquals(distances.getValue(0, 0), 0d);
- assertEquals(distances.getValue(1, 1), 0d);
- assertEquals(distances.getValue(0, 1), 1d);
- assertEquals(distances.getValue(1, 0), 1d);
- }
-
- /**
- * Verify computed distances of sequences with dissimilar secondary structures
- */
- @Test(groups = "Functional")
- public void testFindDistances_notSimilar()
- {
- AlignFrame af = setupAlignmentView("Not Similar");
- AlignViewport viewport = af.getViewport();
- AlignmentView view = viewport.getAlignmentView(false);
-
- ScoreModelI sm = new SecondaryStructureDistanceModel();
- sm = ScoreModels.getInstance().getScoreModel(sm.getName(),
- af.alignPanel);
-
- /*
- * score = 2 + 2 + 2 + 2 = 8/4
- */
- SimilarityParamsI params = new SimilarityParams(false, true, true, true);
- params.setSecondaryStructureSource("3D Structures");
- MatrixI distances = sm.findDistances(view, params);
- assertEquals(distances.getValue(0, 0), 0d);
- assertEquals(distances.getValue(1, 1), 0d);
- assertEquals(distances.getValue(0, 1), 2d);
- assertEquals(distances.getValue(1, 0), 2d);
- }
-
- /**
- * Verify computed distances of sequences with dissimilar secondary structures
- * with coil structure represented as null
- */
- @Test(groups = "Functional")
- public void testFindDistances_withCoil()
- {
- AlignFrame af = setupAlignmentView("With Coil");
- AlignViewport viewport = af.getViewport();
- AlignmentView view = viewport.getAlignmentView(false);
-
- ScoreModelI sm = new SecondaryStructureDistanceModel();
- sm = ScoreModels.getInstance().getScoreModel(sm.getName(),
- af.alignPanel);
-
- /*
- * score = 2 + 2 + 2 + 2 = 8/4
- */
- SimilarityParamsI params = new SimilarityParams(false, true, true, true);
- params.setSecondaryStructureSource("3D Structures");
- MatrixI distances = sm.findDistances(view, params);
- assertEquals(distances.getValue(0, 0), 0d);
- assertEquals(distances.getValue(1, 1), 0d);
- assertEquals(distances.getValue(0, 1), 2d);
- assertEquals(distances.getValue(1, 0), 2d);
- }
/**
* Verify computed distances of sequences with gap
af.getFeatureRenderer().findAllFeatures(true);
return af;
}
+
+
+ @DataProvider(name = "testData")
+ public Object[][] testData() {
+ return new Object[][] {
+ {"All Similar", 0d, 0d, 0d, 0d / 4},
+ {"Partially Similar", 0d, 0d, 1d, 1d},
+ {"Not Similar", 0d, 0d, 2d, 2d},
+ {"With Coil", 0d, 0d, 2d, 2d},
+ };
+ }
+ @Test(dataProvider = "testData")
+ public void testFindDistances(String scenario, double expectedValue00, double expectedValue11,
+ double expectedValue01, double expectedValue10) {
+ AlignFrame af = setupAlignmentView(scenario);
+ AlignViewport viewport = af.getViewport();
+ AlignmentView view = viewport.getAlignmentView(false);
+
+ ScoreModelI sm = new SecondaryStructureDistanceModel();
+ sm = ScoreModels.getInstance().getScoreModel(sm.getName(),
+ af.alignPanel);
+
+ SimilarityParamsI params = new SimilarityParams(false, true, true, true);
+ params.setSecondaryStructureSource("3D Structures");
+ MatrixI distances = sm.findDistances(view, params);
+
+ assertEquals(distances.getValue(0, 0), expectedValue00);
+ assertEquals(distances.getValue(1, 1), expectedValue11);
+ assertEquals(distances.getValue(0, 1), expectedValue01);
+ assertEquals(distances.getValue(1, 0), expectedValue10);
+ }
+
+
}