Clover icon

jalviewX

  1. Project Clover database Wed Oct 31 2018 15:13:58 GMT
  2. Package jalview.analysis

File AlignmentSorterTest.java

 

Code metrics

0
48
2
1
131
82
2
0.04
24
2
1

Classes

Class Line # Actions
AlignmentSorterTest 18 48 2 0
1.0100%
 

Contributing tests

This file is covered by 2 tests. .

Source view

1    package jalview.analysis;
2   
3    import static org.testng.Assert.assertSame;
4   
5    import jalview.datamodel.Alignment;
6    import jalview.datamodel.AlignmentI;
7    import jalview.datamodel.Sequence;
8    import jalview.datamodel.SequenceFeature;
9    import jalview.datamodel.SequenceI;
10   
11    import java.util.Arrays;
12    import java.util.List;
13   
14    import junit.extensions.PA;
15   
16    import org.testng.annotations.Test;
17   
 
18    public class AlignmentSorterTest
19    {
 
20  1 toggle @Test(groups = "Functional")
21    public void testSortByFeature_score()
22    {
23  1 SequenceI seq1 = new Sequence("Seq1", "ABC--D-EFGHIJ");
24  1 SequenceI seq2 = new Sequence("Seq2", "ABCDEFGHIJ");
25  1 SequenceI seq3 = new Sequence("Seq3", "ABCDE-FGHIJ");
26  1 SequenceI seq4 = new Sequence("Seq4", "ABCDEFGHIJ");
27  1 SequenceI[] seqs = new SequenceI[] { seq1, seq2, seq3, seq4 };
28  1 AlignmentI al = new Alignment(seqs);
29  1 al.setDataset(null);
30   
31    /*
32    * sort with no score features does nothing
33    */
34  1 PA.setValue(AlignmentSorter.class, "sortByFeatureCriteria", null);
35   
36  1 AlignmentSorter.sortByFeature(null, null, 0, al.getWidth(), al,
37    AlignmentSorter.FEATURE_SCORE);
38  1 assertSame(al.getSequenceAt(0), seq1);
39  1 assertSame(al.getSequenceAt(1), seq2);
40  1 assertSame(al.getSequenceAt(2), seq3);
41  1 assertSame(al.getSequenceAt(3), seq4);
42   
43    /*
44    * add score and non-score features
45    * seq1 Cath(2.0) Pfam(4.0) average 3.0
46    * seq2 Cath(2.5) Metal(NaN) average 2.5
47    * seq3 KD(-4), KD(3.0) average -0.5
48    * seq4 Helix(NaN) - should sort as if largest score
49    */
50  1 seq1.addSequenceFeature(new SequenceFeature("Cath", "", 2, 3, 2.0f,
51    "g1"));
52  1 seq1.addSequenceFeature(new SequenceFeature("Pfam", "", 4, 5, 4.0f,
53    "g2"));
54  1 seq2.addSequenceFeature(new SequenceFeature("Cath", "", 2, 3, 2.5f,
55    "g3"));
56  1 seq2.addSequenceFeature(new SequenceFeature("Metal", "", 2, 3,
57    Float.NaN, "g4"));
58  1 seq3.addSequenceFeature(new SequenceFeature("kD", "", 2, 3, -4f, "g5"));
59  1 seq3.addSequenceFeature(new SequenceFeature("kD", "", 5, 6, 3.0f, "g6"));
60  1 seq4.addSequenceFeature(new SequenceFeature("Helix", "", 2, 3,
61    Float.NaN, "g7"));
62   
63    /*
64    * sort by ascending score, no filter on feature type or group
65    * NB sort order for the same feature set (none) gets toggled, so descending
66    */
67  1 PA.setValue(AlignmentSorter.class, "sortByFeatureAscending", true);
68  1 AlignmentSorter.sortByFeature(null, null, 0, al.getWidth(), al,
69    AlignmentSorter.FEATURE_SCORE);
70  1 assertSame(al.getSequenceAt(3), seq3); // -0.5
71  1 assertSame(al.getSequenceAt(2), seq2); // 2.5
72  1 assertSame(al.getSequenceAt(1), seq1); // 3.0
73  1 assertSame(al.getSequenceAt(0), seq4); // maximum 'score'
74   
75    /*
76    * repeat sort toggles order - now ascending
77    */
78  1 AlignmentSorter.sortByFeature(null, null, 0, al.getWidth(), al,
79    AlignmentSorter.FEATURE_SCORE);
80  1 assertSame(al.getSequenceAt(0), seq3); // -0.5
81  1 assertSame(al.getSequenceAt(1), seq2); // 2.5
82  1 assertSame(al.getSequenceAt(2), seq1); // 3.0
83  1 assertSame(al.getSequenceAt(3), seq4);
84   
85    /*
86    * specify features, excluding Pfam
87    * seq1 average is now 2.0
88    * next sort is ascending (not toggled) as for a different feature set
89    */
90  1 List<String> types = Arrays.asList(new String[] { "Cath", "kD" });
91  1 AlignmentSorter.sortByFeature(types, null, 0, al.getWidth(), al,
92    AlignmentSorter.FEATURE_SCORE);
93  1 assertSame(al.getSequenceAt(0), seq3); // -0.5
94  1 assertSame(al.getSequenceAt(1), seq1); // 2.0
95  1 assertSame(al.getSequenceAt(2), seq2); // 2.5
96  1 assertSame(al.getSequenceAt(3), seq4);
97   
98    /*
99    * specify groups, excluding g5 (kD -4 score)
100    * seq3 average is now 3.0
101    * next sort is ascending (not toggled) as for a different group spec
102    */
103  1 List<String> groups = Arrays.asList(new String[] { "g1", "g2", "g3",
104    "g6" });
105  1 AlignmentSorter.sortByFeature(types, groups, 0, al.getWidth(), al,
106    AlignmentSorter.FEATURE_SCORE);
107  1 assertSame(al.getSequenceAt(0), seq1); // 2.0
108  1 assertSame(al.getSequenceAt(1), seq2); // 2.5
109  1 assertSame(al.getSequenceAt(2), seq3); // 3.0
110  1 assertSame(al.getSequenceAt(3), seq4);
111   
112    /*
113    * limit to columns 0-4, excluding 2nd feature of seq1 and seq3
114    * seq1 is now 2.0, seq3 is now -4
115    */
116    // fails because seq1.findPosition(4) returns 4
117    // although residue 4 is in column 5! - JAL-2544
118  1 AlignmentSorter.sortByFeature(null, null, 0, 4, al,
119    AlignmentSorter.FEATURE_SCORE);
120  1 assertSame(al.getSequenceAt(0), seq3); // -4
121  1 assertSame(al.getSequenceAt(1), seq1); // 2.0
122  1 assertSame(al.getSequenceAt(2), seq2); // 2.5
123  1 assertSame(al.getSequenceAt(3), seq4);
124    }
125   
 
126  1 toggle @Test(groups = "Functional")
127    public void testSortByFeature_density()
128    {
129    // TODO
130    }
131    }