X-Git-Url: http://source.jalview.org/gitweb/?a=blobdiff_plain;f=test%2Fjalview%2Fdatamodel%2Ffeatures%2FSequenceFeaturesTest.java;fp=test%2Fjalview%2Fdatamodel%2Ffeatures%2FSequenceFeaturesTest.java;h=7dde97b6006b5db39bf4b91115963de7efa3f37c;hb=d043ce47fc710d3eb2629ba926a8a7417bd67d8c;hp=56512cdc4ea65efab57839dfbe337fde15e3a996;hpb=49db0dff1da16c3355b43a41498c1fc93ef47e91;p=jalview.git diff --git a/test/jalview/datamodel/features/SequenceFeaturesTest.java b/test/jalview/datamodel/features/SequenceFeaturesTest.java index 56512cd..7dde97b 100644 --- a/test/jalview/datamodel/features/SequenceFeaturesTest.java +++ b/test/jalview/datamodel/features/SequenceFeaturesTest.java @@ -1,3 +1,23 @@ +/* + * 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 . + * The Jalview Authors are detailed in the 'AUTHORS' file. + */ package jalview.datamodel.features; import static org.testng.Assert.assertEquals; @@ -77,8 +97,8 @@ public class SequenceFeaturesTest Float.NaN, null); store.add(sf6); // contact feature - SequenceFeature sf7 = new SequenceFeature("Disulphide bond", "desc", - 18, 45, Float.NaN, null); + SequenceFeature sf7 = new SequenceFeature("Disulphide bond", "desc", 18, + 45, Float.NaN, null); store.add(sf7); // different feature type SequenceFeature sf8 = new SequenceFeature("Pfam", "desc", 30, 40, @@ -142,8 +162,8 @@ public class SequenceFeaturesTest Float.NaN, null); store.add(sf2); // contact feature - SequenceFeature sf3 = new SequenceFeature("Disulphide bond", "desc", - 18, 45, Float.NaN, null); + SequenceFeature sf3 = new SequenceFeature("Disulphide bond", "desc", 18, + 45, Float.NaN, null); store.add(sf3); // repeat for different feature type SequenceFeature sf4 = new SequenceFeature("Pfam", "desc", 10, 20, @@ -155,7 +175,7 @@ public class SequenceFeaturesTest SequenceFeature sf6 = new SequenceFeature("Disulfide bond", "desc", 18, 45, Float.NaN, null); store.add(sf6); - + /* * get all contact features */ @@ -163,7 +183,7 @@ public class SequenceFeaturesTest assertEquals(features.size(), 2); assertTrue(features.contains(sf3)); assertTrue(features.contains(sf6)); - + /* * get contact features by type */ @@ -171,11 +191,11 @@ public class SequenceFeaturesTest assertTrue(store.getContactFeatures("Cath").isEmpty()); assertTrue(store.getContactFeatures("Pfam").isEmpty()); assertTrue(store.getContactFeatures("DISULPHIDE BOND").isEmpty()); - + features = store.getContactFeatures("Disulphide bond"); assertEquals(features.size(), 1); assertTrue(features.contains(sf3)); - + features = store.getContactFeatures("Disulfide bond"); assertEquals(features.size(), 1); assertTrue(features.contains(sf6)); @@ -194,8 +214,8 @@ public class SequenceFeaturesTest Float.NaN, null); store.add(sf2); // contact feature - SequenceFeature sf3 = new SequenceFeature("Disulphide bond", "desc", - 18, 45, Float.NaN, null); + SequenceFeature sf3 = new SequenceFeature("Disulphide bond", "desc", 18, + 45, Float.NaN, null); store.add(sf3); // repeat for different feature type SequenceFeature sf4 = new SequenceFeature("Pfam", "desc", 10, 20, @@ -211,7 +231,7 @@ public class SequenceFeaturesTest SequenceFeature sf7 = new SequenceFeature("Pfam", "desc2", 0, 0, Float.NaN, null); store.add(sf7); - + /* * get all non-positional features */ @@ -220,18 +240,18 @@ public class SequenceFeaturesTest assertTrue(features.contains(sf2)); assertTrue(features.contains(sf5)); assertTrue(features.contains(sf7)); - + /* * get non-positional features by type */ assertTrue(store.getNonPositionalFeatures((String) null).isEmpty()); assertTrue(store.getNonPositionalFeatures("Cath").isEmpty()); assertTrue(store.getNonPositionalFeatures("PFAM").isEmpty()); - + features = store.getNonPositionalFeatures("Metal"); assertEquals(features.size(), 1); assertTrue(features.contains(sf2)); - + features = store.getNonPositionalFeatures("Pfam"); assertEquals(features.size(), 2); assertTrue(features.contains(sf5)); @@ -250,8 +270,7 @@ public class SequenceFeaturesTest SequenceFeature addFeature(SequenceFeaturesI sf, String type, int from, int to) { - SequenceFeature sf1 = new SequenceFeature(type, "", from, to, - Float.NaN, + SequenceFeature sf1 = new SequenceFeature(type, "", from, to, Float.NaN, null); sf.add(sf1); return sf1; @@ -273,31 +292,31 @@ public class SequenceFeaturesTest SequenceFeature sf10 = addFeature(sf, "Cath", 40, 100); SequenceFeature sf11 = addFeature(sf, "Cath", 60, 100); SequenceFeature sf12 = addFeature(sf, "Cath", 70, 70); - + List overlaps = sf.findFeatures(200, 200, "Pfam"); assertTrue(overlaps.isEmpty()); - - overlaps = sf.findFeatures( 1, 9, "Pfam"); + + overlaps = sf.findFeatures(1, 9, "Pfam"); assertEquals(overlaps.size(), 1); assertTrue(overlaps.contains(sf2)); - - overlaps = sf.findFeatures( 5, 18, "Pfam"); + + overlaps = sf.findFeatures(5, 18, "Pfam"); assertEquals(overlaps.size(), 2); assertTrue(overlaps.contains(sf1)); assertTrue(overlaps.contains(sf2)); - + overlaps = sf.findFeatures(30, 40, "Pfam"); assertEquals(overlaps.size(), 3); assertTrue(overlaps.contains(sf1)); assertTrue(overlaps.contains(sf3)); assertTrue(overlaps.contains(sf4)); - - overlaps = sf.findFeatures( 80, 90, "Pfam"); + + overlaps = sf.findFeatures(80, 90, "Pfam"); assertEquals(overlaps.size(), 2); assertTrue(overlaps.contains(sf4)); assertTrue(overlaps.contains(sf5)); - - overlaps = sf.findFeatures( 68, 70, "Pfam"); + + overlaps = sf.findFeatures(68, 70, "Pfam"); assertEquals(overlaps.size(), 3); assertTrue(overlaps.contains(sf4)); assertTrue(overlaps.contains(sf5)); @@ -377,12 +396,10 @@ public class SequenceFeaturesTest * add, then delete, more non-positional features of different types */ SequenceFeature sfy = new SequenceFeature("AnotherType", "Desc", 0, 0, - 0f, - "AnotherGroup"); + 0f, "AnotherGroup"); sf.add(sfy); SequenceFeature sfz = new SequenceFeature("AThirdType", "Desc", 0, 0, - 0f, - null); + 0f, null); sf.add(sfz); groups = sf.getFeatureGroups(false); assertEquals(groups.size(), 3); @@ -452,7 +469,7 @@ public class SequenceFeaturesTest { SequenceFeaturesI sf = new SequenceFeatures(); assertTrue(sf.getFeatureTypesForGroups(true, (String) null).isEmpty()); - + /* * add feature with group = "Uniprot", type = "helix" */ @@ -464,7 +481,7 @@ public class SequenceFeaturesTest assertEquals(groups.size(), 1); assertTrue(groups.contains("helix")); assertTrue(sf.getFeatureTypesForGroups(true, (String) null).isEmpty()); - + /* * add feature with group = "Uniprot", type = "strand" */ @@ -525,8 +542,9 @@ public class SequenceFeaturesTest assertTrue(groups.contains("turn")); assertTrue(groups.contains("strand")); // alternative vararg syntax - groups = sf.getFeatureTypesForGroups(true, new String[] { "Cath", - "Scop" }); + groups = sf.getFeatureTypesForGroups(true, + new String[] + { "Cath", "Scop" }); assertEquals(groups.size(), 2); assertTrue(groups.contains("turn")); assertTrue(groups.contains("strand")); @@ -568,8 +586,8 @@ public class SequenceFeaturesTest /* * add contact feature */ - SequenceFeature sf4 = new SequenceFeature("Disulphide Bond", "desc", - 10, 20, Float.NaN, null); + SequenceFeature sf4 = new SequenceFeature("Disulphide Bond", "desc", 10, + 20, Float.NaN, null); store.add(sf4); types = store.getFeatureTypes(); assertEquals(types.size(), 3); @@ -607,7 +625,7 @@ public class SequenceFeaturesTest SequenceFeaturesI store = new SequenceFeatures(); assertEquals(store.getFeatureCount(true), 0); assertEquals(store.getFeatureCount(false), 0); - + /* * add positional */ @@ -625,7 +643,7 @@ public class SequenceFeaturesTest assertFalse(store.add(sf2)); assertEquals(store.getFeatureCount(true), 1); assertEquals(store.getFeatureCount(false), 0); - + /* * add non-positional feature */ @@ -634,16 +652,16 @@ public class SequenceFeaturesTest store.add(sf3); assertEquals(store.getFeatureCount(true), 1); assertEquals(store.getFeatureCount(false), 1); - + /* * add contact feature (counts as 1) */ - SequenceFeature sf4 = new SequenceFeature("Disulphide Bond", "desc", - 10, 20, Float.NaN, null); + SequenceFeature sf4 = new SequenceFeature("Disulphide Bond", "desc", 10, + 20, Float.NaN, null); store.add(sf4); assertEquals(store.getFeatureCount(true), 2); assertEquals(store.getFeatureCount(false), 1); - + /* * add another Pfam but this time as a positional feature */ @@ -668,7 +686,7 @@ public class SequenceFeaturesTest assertTrue(store.delete(sf3)); assertEquals(store.getFeatureCount(true), 3); assertEquals(store.getFeatureCount(false), 0); - + /* * delete second Pfam (positional) */ @@ -683,21 +701,21 @@ public class SequenceFeaturesTest SequenceFeaturesI store = new SequenceFeatures(); List features = store.getAllFeatures(); assertTrue(features.isEmpty()); - + SequenceFeature sf1 = new SequenceFeature("Metal", "desc", 10, 20, Float.NaN, null); store.add(sf1); features = store.getAllFeatures(); assertEquals(features.size(), 1); assertTrue(features.contains(sf1)); - + SequenceFeature sf2 = new SequenceFeature("Metallic", "desc", 10, 20, Float.NaN, null); store.add(sf2); features = store.getAllFeatures(); assertEquals(features.size(), 2); assertTrue(features.contains(sf2)); - + /* * add non-positional feature */ @@ -707,17 +725,17 @@ public class SequenceFeaturesTest features = store.getAllFeatures(); assertEquals(features.size(), 3); assertTrue(features.contains(sf3)); - + /* * add contact feature */ - SequenceFeature sf4 = new SequenceFeature("Disulphide Bond", "desc", - 10, 20, Float.NaN, null); + SequenceFeature sf4 = new SequenceFeature("Disulphide Bond", "desc", 10, + 20, Float.NaN, null); store.add(sf4); features = store.getAllFeatures(); assertEquals(features.size(), 4); assertTrue(features.contains(sf4)); - + /* * add another Pfam */ @@ -740,7 +758,7 @@ public class SequenceFeaturesTest assertTrue(features.contains(sf1)); assertTrue(features.contains(sf3)); assertTrue(features.contains(sf5)); - + /* * delete first Pfam */ @@ -748,7 +766,7 @@ public class SequenceFeaturesTest features = store.getAllFeatures(); assertEquals(features.size(), 4); assertFalse(features.contains(sf3)); - + /* * delete second Pfam */ @@ -786,8 +804,8 @@ public class SequenceFeaturesTest /* * add contact feature - counts 1 to feature length */ - SequenceFeature sf4 = new SequenceFeature("Disulphide Bond", "desc", - 10, 20, Float.NaN, null); + SequenceFeature sf4 = new SequenceFeature("Disulphide Bond", "desc", 10, + 20, Float.NaN, null); store.add(sf4); assertEquals(store.getTotalFeatureLength(), 12); @@ -963,7 +981,7 @@ public class SequenceFeaturesTest public void testGetFeatureTypes_byOntology() { SequenceFeaturesI store = new SequenceFeatures(); - + SequenceFeature sf1 = new SequenceFeature("transcript", "desc", 10, 20, Float.NaN, null); store.add(sf1); @@ -1003,9 +1021,9 @@ public class SequenceFeaturesTest assertTrue(features.isEmpty()); assertTrue(store.getFeaturesByOntology(new String[] {}).isEmpty()); assertTrue(store.getFeaturesByOntology((String[]) null).isEmpty()); - - SequenceFeature transcriptFeature = new SequenceFeature("transcript", "desc", 10, 20, - Float.NaN, null); + + SequenceFeature transcriptFeature = new SequenceFeature("transcript", + "desc", 10, 20, Float.NaN, null); store.add(transcriptFeature); /* @@ -1016,8 +1034,8 @@ public class SequenceFeaturesTest Float.NaN, null); store.add(mrnaFeature); - SequenceFeature pfamFeature = new SequenceFeature("Pfam", "desc", 30, 40, - Float.NaN, null); + SequenceFeature pfamFeature = new SequenceFeature("Pfam", "desc", 30, + 40, Float.NaN, null); store.add(pfamFeature); /* @@ -1051,8 +1069,7 @@ public class SequenceFeaturesTest public void testSortFeatures() { List sfs = new ArrayList<>(); - SequenceFeature sf1 = new SequenceFeature("Pfam", "desc", 30, - 60, + SequenceFeature sf1 = new SequenceFeature("Pfam", "desc", 30, 60, Float.NaN, null); sfs.add(sf1); SequenceFeature sf2 = new SequenceFeature("Rfam", "desc", 40, 50, @@ -1061,12 +1078,10 @@ public class SequenceFeaturesTest SequenceFeature sf3 = new SequenceFeature("Rfam", "desc", 50, 60, Float.NaN, null); sfs.add(sf3); - SequenceFeature sf4 = new SequenceFeature("Xfam", "desc", 30, - 80, + SequenceFeature sf4 = new SequenceFeature("Xfam", "desc", 30, 80, Float.NaN, null); sfs.add(sf4); - SequenceFeature sf5 = new SequenceFeature("Xfam", "desc", 30, - 90, + SequenceFeature sf5 = new SequenceFeature("Xfam", "desc", 30, 90, Float.NaN, null); sfs.add(sf5); @@ -1125,12 +1140,14 @@ public class SequenceFeaturesTest assertTrue(features.contains(sf5)); // positional features for null group, specified type - features = store.getFeaturesForGroup(true, null, new String[] { "Pfam", - "Xfam" }); + features = store.getFeaturesForGroup(true, null, + new String[] + { "Pfam", "Xfam" }); assertEquals(features.size(), 1); assertTrue(features.contains(sf1)); - features = store.getFeaturesForGroup(true, null, new String[] { "Pfam", - "Xfam", "Cath" }); + features = store.getFeaturesForGroup(true, null, + new String[] + { "Pfam", "Xfam", "Cath" }); assertEquals(features.size(), 2); assertTrue(features.contains(sf1)); assertTrue(features.contains(sf5)); @@ -1146,7 +1163,8 @@ public class SequenceFeaturesTest "Rfam"); assertEquals(features.size(), 1); assertTrue(features.contains(sf3)); - assertTrue(store.getFeaturesForGroup(true, "Uniprot", "Cath").isEmpty()); + assertTrue( + store.getFeaturesForGroup(true, "Uniprot", "Cath").isEmpty()); // non-positional features for null group, any type features = store.getFeaturesForGroup(false, null); @@ -1191,17 +1209,17 @@ public class SequenceFeaturesTest // non-positional feature: SequenceFeature sf4 = new SequenceFeature("Pfam", "", 0, 0, 0f, null); store.add(sf4); - + /* * shift features right by 5 */ assertTrue(store.shiftFeatures(0, 5)); - + // non-positional features untouched: List nonPos = store.getNonPositionalFeatures(); assertEquals(nonPos.size(), 1); assertTrue(nonPos.contains(sf4)); - + // positional features are replaced List pos = store.getPositionalFeatures(); assertEquals(pos.size(), 3); @@ -1218,7 +1236,7 @@ public class SequenceFeaturesTest assertEquals(pos.get(2).getBegin(), 28); assertEquals(pos.get(2).getEnd(), 37); assertEquals(pos.get(2).getType(), "Disulfide bond"); - + /* * now shift left by 15 * feature at [7-10] should be removed