1 package jalview.ws2.actions.annotation;
3 import static jalview.testutils.Matchers.matchesSequenceString;
4 import static org.hamcrest.MatcherAssert.assertThat;
5 import static org.hamcrest.Matchers.contains;
6 import static org.hamcrest.Matchers.hasSize;
10 import org.testng.annotations.DataProvider;
11 import org.testng.annotations.Test;
13 import jalview.datamodel.Alignment;
14 import jalview.datamodel.Sequence;
15 import jalview.datamodel.SequenceGroup;
17 public class AnnotationJobTest
19 @Test(groups = { "Functional" })
20 public void testCreate_EqualLengthNoGapsSubmitGaps()
22 var alignment = new Alignment(new Sequence[] {
23 new Sequence("test1", "ACACACACACA"),
24 new Sequence("test2", "AVAVAVAVAVA"),
25 new Sequence("test3", "AVWVAVWVAVW")
27 var annotJob = AnnotationJob.create(alignment, true, false, false, false, 0);
28 assertThat(annotJob.getInputSequences(), contains(
29 matchesSequenceString("ACACACACACA"),
30 matchesSequenceString("AVAVAVAVAVA"),
31 matchesSequenceString("AVWVAVWVAVW")
35 @Test(groups = { "Functional" })
36 public void testCreate_EqualLengthNoGapsNoSubmitGaps()
38 var alignment = new Alignment(new Sequence[] {
39 new Sequence("test1", "ACACACACACA"),
40 new Sequence("test2", "AVAVAVAVAVA"),
41 new Sequence("test3", "AVWVAVWVAVW")
43 var annotJob = AnnotationJob.create(alignment, true, true, false, false, 0);
44 assertThat(annotJob.getInputSequences(), contains(
45 matchesSequenceString("ACACACACACA"),
46 matchesSequenceString("AVAVAVAVAVA"),
47 matchesSequenceString("AVWVAVWVAVW")
51 @Test(groups = { "Functional" })
52 public void testCreate_UnequalLengthNoGapsNoSubmitGaps()
54 var alignment = new Alignment(new Sequence[] {
55 new Sequence("test1", "ACACACACACA"),
56 new Sequence("test2", "AVAVAVAVAVAVA"),
57 new Sequence("test3", "AVWVAVWVAVWV")
59 var annotJob = AnnotationJob.create(alignment, true, false, false, false, 0);
60 assertThat(annotJob.getInputSequences(), contains(
61 matchesSequenceString("ACACACACACA"),
62 matchesSequenceString("AVAVAVAVAVAVA"),
63 matchesSequenceString("AVWVAVWVAVWV")
67 @Test(groups = { "Functional" })
68 public void testCreate_UnequalLengthNoGapsSubmitGaps()
70 var alignment = new Alignment(new Sequence[] {
71 new Sequence("test1", "ACACACACACA"),
72 new Sequence("test2", "AVAVAVAVAVAVA"),
73 new Sequence("test3", "AVWVAVWVAVWV")
75 var annotJob = AnnotationJob.create(alignment, true, true, false, false, 0);
76 assertThat(annotJob.getInputSequences(), contains(
77 matchesSequenceString("ACACACACACA"),
78 matchesSequenceString("AVAVAVAVAVAVA"),
79 matchesSequenceString("AVWVAVWVAVWV")
83 @Test(groups = { "Functional" })
84 public void testCreate_UnequalLengthNoGapsSubmitGapsRequireAligned()
86 var alignment = new Alignment(new Sequence[] {
87 new Sequence("test1", "ACACACACACA"),
88 new Sequence("test2", "AVAVAVAVAVAVA"),
89 new Sequence("test3", "AVWVAVWVAVWV")
91 var annotJob = AnnotationJob.create(alignment, true, true, true, false, 0);
92 assertThat(annotJob.getInputSequences(), contains(
93 matchesSequenceString("ACACACACACA--"),
94 matchesSequenceString("AVAVAVAVAVAVA"),
95 matchesSequenceString("AVWVAVWVAVWV-")
100 public Object[] alignmentWithShortSequences()
102 return new Object[] {
103 new Alignment(new Sequence[] {
104 new Sequence("test1", "AAAAA"),
105 new Sequence("test2", "ACAACAAACAAC"),
106 new Sequence("test3", "ACA")
108 new Alignment(new Sequence[] {
109 new Sequence("test1", "----AAAAA---"),
110 new Sequence("test2", "ACAACAAACAAC"),
111 new Sequence("test3", "-----ACA----")
113 new Alignment(new Sequence[] {
114 new Sequence("test1", "--AAA---AA--"),
115 new Sequence("test2", "ACAACAAACAAC"),
116 new Sequence("test3", "-------ACA--")
121 @Test(groups = { "Functional" }, dataProvider = "alignmentWithShortSequences")
122 public void testCreate_TooShortSequence_ShortSequenceRemoved(Alignment aln)
124 var annotJob = AnnotationJob.create(aln, true, false, false, false, 0);
125 assertThat(annotJob.getInputSequences(), hasSize(1));
128 @Test(groups = { "Functional" }, dataProvider = "alignmentWithShortSequences")
129 public void testCreate_TooShortSequenceAndSubmitGaps_ShortSeqRemoved(Alignment aln)
131 var annotJob = AnnotationJob.create(aln, true, true, false, false, 0);
132 assertThat(annotJob.getInputSequences(), hasSize(1));
135 @Test(groups = { "Functional" }, dataProvider = "alignmentWithShortSequences")
136 public void testCreate_TooShortSequenceAndRequireAligned_ShortSeqRemoved(Alignment aln)
138 var annotJob = AnnotationJob.create(aln, true, true, true, false, 0);
139 assertThat(annotJob.getInputSequences(), hasSize(1));
142 @Test(groups = { "Functional" })
143 public void testCreate_EmptyColumnAndSubmitGaps_ColumnExtruded()
145 var alignment = new Alignment(new Sequence[] {
146 new Sequence("test1", "ACA-ACAA--CACA"),
147 new Sequence("test2", "AVA-AVAA-AVAVA"),
148 new Sequence("test3", "AVAWAVAA-AVWVA")
150 var annotJob = AnnotationJob.create(alignment, true, true, false, false, 0);
151 assertThat(annotJob.getInputSequences(), contains(
152 matchesSequenceString("ACA-ACAA-CACA"),
153 matchesSequenceString("AVA-AVAAAVAVA"),
154 matchesSequenceString("AVAWAVAAAVWVA")
158 @Test(groups = { "Functional" })
159 public void testCreate_EmptyColumnAndRequireAligned_ColumnExtruded()
161 var alignment = new Alignment(new Sequence[] {
162 new Sequence("test1", "ACA-ACAA--CACA"),
163 new Sequence("test2", "AVA-AVAA-AVAVA"),
164 new Sequence("test3", "AVAWAVAA-AVWVA")
166 var annotJob = AnnotationJob.create(alignment, true, true, true, false, 0);
167 assertThat(annotJob.getInputSequences(), contains(
168 matchesSequenceString("ACA-ACAA-CACA"),
169 matchesSequenceString("AVA-AVAAAVAVA"),
170 matchesSequenceString("AVAWAVAAAVWVA")
174 @Test(groups = { "Functional"} )
175 public void testCreate_ContainsNonStandardAndNoFilterNonStandard_NonStandardToGap()
177 var alignment = new Alignment(new Sequence[] {
178 new Sequence("test1", "ACACAOACACAC"),
179 new Sequence("test2", "ABAVAVAVABAV")
181 var annotJob = AnnotationJob.create(alignment, true, true, true, false, 0);
182 assertThat(annotJob.getInputSequences(), contains(
183 matchesSequenceString("ACACA-ACACAC"),
184 matchesSequenceString("A-AVAVAVA-AV")
189 public Object[] alignmentWithNonStandardInColumns()
191 return new Object[] {
192 new Alignment(new Sequence[] {
193 new Sequence("test1", "A-AAAOAAAAAAAA"),
194 new Sequence("test2", "ABAAA-AAAAAAAA")
196 new Alignment(new Sequence[] {
197 new Sequence("test1", "ABAAAOAAAAAAAA"),
198 new Sequence("test2", "ABAAABAAAAAAAA")
200 new Alignment(new Sequence[] {
201 new Sequence("test1", "A-AAAOAAAAAAAA"),
202 new Sequence("test2", "A-AAA-AAAAAAAA")
207 @Test(groups = { "Functional" }, dataProvider = "alignmentWithNonStandardInColumns")
208 public void testCreate_NonStandardInColumnsAndFilterNonStandard_ColumnsExtruded(Alignment aln)
210 var annotJob = AnnotationJob.create(aln, true, true, true, true, 0);
211 assertThat(annotJob.getInputSequences(), contains(
212 matchesSequenceString("AAAAAAAAAAAA"),
213 matchesSequenceString("AAAAAAAAAAAA")
217 @Test(groups = { "Functional" })
218 public void testCreate_SequenceGroup_RegionSubmitted()
220 var group = new SequenceGroup(List.of(
221 new Sequence("test1", "CCCCAAATAAATAAATCCC"),
222 new Sequence("test2", "----AAATAAATAAAT---")
224 group.setStartRes(4);
226 var annotJob = AnnotationJob.create(group, true, false, false, false, 0);
227 assertThat(annotJob.getInputSequences(), contains(
228 matchesSequenceString("AAATAAATAAAT"),
229 matchesSequenceString("AAATAAATAAAT")
233 @Test(groups = { "Functional" })
234 public void testCreate_RegionIncludingGaps_RegionSubmittedWithoutGaps()
236 var group = new SequenceGroup(List.of(
237 new Sequence("test1", "CCCC-AAATAAATAAAT--CCC"),
238 new Sequence("test2", "-----AAATAAATAAAT-----")
240 group.setStartRes(4);
242 var annotJob = AnnotationJob.create(group, true, false, false, false, 0);
243 assertThat(annotJob.getInputSequences(), contains(
244 matchesSequenceString("AAATAAATAAAT"),
245 matchesSequenceString("AAATAAATAAAT")
249 @Test(groups = { "Functional" })
250 public void testCreate_RegionIncludingGapsAndSubmitGaps_RegionSubmittedGapsExtruded()
252 var group = new SequenceGroup(List.of(
253 new Sequence("test1", "CCCC-AAATAAATAAAT--CCC"),
254 new Sequence("test2", "-----AAATAAATAAAT-----")
256 group.setStartRes(4);
258 var annotJob = AnnotationJob.create(group, true, true, false, false, 0);
259 assertThat(annotJob.getInputSequences(), contains(
260 matchesSequenceString("AAATAAATAAAT"),
261 matchesSequenceString("AAATAAATAAAT")