}
@Test(groups = "Functional")
- public void testFindFeaturesAtRes()
+ public void testFindFeaturesAtColumn()
{
- String seqData = ">s1\nabcdefghijklmnopqrstuvwxyz\n";
+ String seqData = ">s1/4-29\n-ab--cdefghijklmnopqrstuvwxyz\n";
AlignFrame af = new FileLoader().LoadFileWaitTillLoaded(seqData,
DataSourceType.PASTE);
AlignViewportI av = af.getViewport();
/*
* with no features
*/
- List<SequenceFeature> features = fr.findFeaturesAtRes(seq, 3);
+ List<SequenceFeature> features = fr.findFeaturesAtColumn(seq, 3);
assertTrue(features.isEmpty());
/*
SequenceFeature sf1 = new SequenceFeature("Type1", "Desc", 0, 0, 1f,
"Group"); // non-positional
seq.addSequenceFeature(sf1);
- SequenceFeature sf2 = new SequenceFeature("Type2", "Desc", 5, 15, 1f,
+ SequenceFeature sf2 = new SequenceFeature("Type2", "Desc", 8, 18, 1f,
"Group1");
seq.addSequenceFeature(sf2);
- SequenceFeature sf3 = new SequenceFeature("Type3", "Desc", 5, 15, 1f,
+ SequenceFeature sf3 = new SequenceFeature("Type3", "Desc", 8, 18, 1f,
"Group2");
seq.addSequenceFeature(sf3);
- SequenceFeature sf4 = new SequenceFeature("Type3", "Desc", 5, 15, 1f,
+ SequenceFeature sf4 = new SequenceFeature("Type3", "Desc", 8, 18, 1f,
null); // null group is always treated as visible
seq.addSequenceFeature(sf4);
/*
* add contact features
*/
- SequenceFeature sf5 = new SequenceFeature("Disulphide Bond", "Desc", 4,
- 12, 1f, "Group1");
+ SequenceFeature sf5 = new SequenceFeature("Disulphide Bond", "Desc", 7,
+ 15, 1f, "Group1");
seq.addSequenceFeature(sf5);
- SequenceFeature sf6 = new SequenceFeature("Disulphide Bond", "Desc", 4,
- 12, 1f, "Group2");
+ SequenceFeature sf6 = new SequenceFeature("Disulphide Bond", "Desc", 7,
+ 15, 1f, "Group2");
seq.addSequenceFeature(sf6);
- SequenceFeature sf7 = new SequenceFeature("Disulphide Bond", "Desc", 4,
- 12, 1f, null);
+ SequenceFeature sf7 = new SequenceFeature("Disulphide Bond", "Desc", 7,
+ 15, 1f, null);
seq.addSequenceFeature(sf7);
+ // feature spanning B--C
+ SequenceFeature sf8 = new SequenceFeature("Type1", "Desc", 5, 6, 1f,
+ "Group");
+ seq.addSequenceFeature(sf8);
+ // contact feature B/C
+ SequenceFeature sf9 = new SequenceFeature("Disulphide Bond", "Desc", 5,
+ 6, 1f, "Group");
+ seq.addSequenceFeature(sf9);
+
/*
* let feature renderer discover features (and make visible)
*/
fr.findAllFeatures(true);
- features = fr.findFeaturesAtRes(seq, 12); // all positional
+ features = fr.findFeaturesAtColumn(seq, 15); // all positional
assertEquals(features.size(), 6);
assertTrue(features.contains(sf2));
assertTrue(features.contains(sf3));
/*
* at a non-contact position
*/
- features = fr.findFeaturesAtRes(seq, 11);
+ features = fr.findFeaturesAtColumn(seq, 14);
assertEquals(features.size(), 3);
assertTrue(features.contains(sf2));
assertTrue(features.contains(sf3));
data[2] = new Object[] { "Type3", colour, true };
data[3] = new Object[] { "Disulphide Bond", colour, true };
fr.setFeaturePriority(data);
- features = fr.findFeaturesAtRes(seq, 12);
+
+ features = fr.findFeaturesAtColumn(seq, 15);
assertEquals(features.size(), 5); // no sf2
assertTrue(features.contains(sf3));
assertTrue(features.contains(sf4));
* make "Group2" not displayed
*/
fr.setGroupVisibility("Group2", false);
- features = fr.findFeaturesAtRes(seq, 12);
+
+ features = fr.findFeaturesAtColumn(seq, 15);
assertEquals(features.size(), 3); // no sf2, sf3, sf6
assertTrue(features.contains(sf4));
assertTrue(features.contains(sf5));
assertTrue(features.contains(sf7));
+
+ // features 'at' a gap between b and c
+ // - returns enclosing feature BC but not contact feature B/C
+ features = fr.findFeaturesAtColumn(seq, 4);
+ assertEquals(features.size(), 1);
+ assertTrue(features.contains(sf8));
+ features = fr.findFeaturesAtColumn(seq, 5);
+ assertEquals(features.size(), 1);
+ assertTrue(features.contains(sf8));
}
}