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;
*/
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);
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);
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;
}
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)");
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)");
// 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)");
}
}
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" })
* 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);
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)
/*
* include gaps
* score = 3 + 3 + 0 + 2 + 3 + 2 = 13/6
- // FIXME out by 1 error in cpwidth JAL-2424 - dividing by 7
*/
SimilarityParamsI params = new SimilarityParams(true, true, true, true);
MatrixI distances = sm.findDistances(view, params);
assertEquals(distances.getValue(0, 0), 0d);
assertEquals(distances.getValue(1, 1), 0d);
- assertEquals(distances.getValue(0, 1), 13d / 7); // should be 13d/6
- assertEquals(distances.getValue(1, 0), 13d / 7);
-
+ 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);
- assertEquals(distances.getValue(0, 1), 6d / 7);// should be 6d/6
+ assertEquals(distances.getValue(0, 1), 6d / 6);// should be 6d/6
}
/**
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);