X-Git-Url: http://source.jalview.org/gitweb/?a=blobdiff_plain;f=test%2Fjalview%2Frenderer%2Fseqfeatures%2FFeatureRendererTest.java;h=31348c628f40215e7b5b51a3726b8d04db5b918a;hb=refs%2Fheads%2Ffeatures%2FJAL-2754findFeaturesByColumn;hp=ab5c137cbb8e772c1a70af2ddbbc9ffd17575af4;hpb=173080a606f4e91665be2d9f67ed1271390a4c82;p=jalview.git diff --git a/test/jalview/renderer/seqfeatures/FeatureRendererTest.java b/test/jalview/renderer/seqfeatures/FeatureRendererTest.java index ab5c137..31348c6 100644 --- a/test/jalview/renderer/seqfeatures/FeatureRendererTest.java +++ b/test/jalview/renderer/seqfeatures/FeatureRendererTest.java @@ -138,9 +138,9 @@ public class FeatureRendererTest } @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(); @@ -150,7 +150,7 @@ public class FeatureRendererTest /* * with no features */ - List features = fr.findFeaturesAtRes(seq, 3); + List features = fr.findFeaturesAtColumn(seq, 3); assertTrue(features.isEmpty()); /* @@ -159,34 +159,43 @@ public class FeatureRendererTest 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)); @@ -198,7 +207,7 @@ public class FeatureRendererTest /* * 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)); @@ -214,7 +223,8 @@ public class FeatureRendererTest 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)); @@ -226,10 +236,20 @@ public class FeatureRendererTest * 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)); } }