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_NonStandardRemain()
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("ACACAOACACAC"),
184 matchesSequenceString("ABAVAVAVABAV")
188 @Test(groups = { "Functional"} )
189 public void testCreate_ContainsNonStandardAndFilterNonStandard_NonStandardToGap()
191 var alignment = new Alignment(new Sequence[] {
192 new Sequence("test1", "ACACAOACACAC"),
193 new Sequence("test2", "ABAVAVAVABAV")
195 var annotJob = AnnotationJob.create(alignment, true, true, true, true, 0);
196 assertThat(annotJob.getInputSequences(), contains(
197 matchesSequenceString("ACACA-ACACAC"),
198 matchesSequenceString("A-AVAVAVA-AV")
203 public Object[] alignmentWithNonStandardInColumns()
205 return new Object[] {
206 new Alignment(new Sequence[] {
207 new Sequence("test1", "A-AAAOAAAAAAAA"),
208 new Sequence("test2", "ABAAA-AAAAAAAA")
210 new Alignment(new Sequence[] {
211 new Sequence("test1", "ABAAAOAAAAAAAA"),
212 new Sequence("test2", "ABAAABAAAAAAAA")
214 new Alignment(new Sequence[] {
215 new Sequence("test1", "A-AAAOAAAAAAAA"),
216 new Sequence("test2", "A-AAA-AAAAAAAA")
221 @Test(groups = { "Functional" }, dataProvider = "alignmentWithNonStandardInColumns")
222 public void testCreate_NonStandardInColumnsAndFilterNonStandard_ColumnsExtruded(Alignment aln)
224 var annotJob = AnnotationJob.create(aln, true, true, true, true, 0);
225 assertThat(annotJob.getInputSequences(), contains(
226 matchesSequenceString("AAAAAAAAAAAA"),
227 matchesSequenceString("AAAAAAAAAAAA")
231 @Test(groups = { "Functional" })
232 public void testCreate_SequenceGroup_RegionSubmitted()
234 var group = new SequenceGroup(List.of(
235 new Sequence("test1", "CCCCAAATAAATAAATCCC"),
236 new Sequence("test2", "----AAATAAATAAAT---")
238 group.setStartRes(4);
240 var annotJob = AnnotationJob.create(group, true, false, false, false, 0);
241 assertThat(annotJob.getInputSequences(), contains(
242 matchesSequenceString("AAATAAATAAAT"),
243 matchesSequenceString("AAATAAATAAAT")
247 @Test(groups = { "Functional" })
248 public void testCreate_RegionIncludingGaps_RegionSubmittedWithoutGaps()
250 var group = new SequenceGroup(List.of(
251 new Sequence("test1", "CCCC-AAATAAATAAAT--CCC"),
252 new Sequence("test2", "-----AAATAAATAAAT-----")
254 group.setStartRes(4);
256 var annotJob = AnnotationJob.create(group, true, false, false, false, 0);
257 assertThat(annotJob.getInputSequences(), contains(
258 matchesSequenceString("AAATAAATAAAT"),
259 matchesSequenceString("AAATAAATAAAT")
263 @Test(groups = { "Functional" })
264 public void testCreate_RegionIncludingGapsAndSubmitGaps_RegionSubmittedGapsExtruded()
266 var group = new SequenceGroup(List.of(
267 new Sequence("test1", "CCCC-AAATAAATAAAT--CCC"),
268 new Sequence("test2", "-----AAATAAATAAAT-----")
270 group.setStartRes(4);
272 var annotJob = AnnotationJob.create(group, true, true, false, false, 0);
273 assertThat(annotJob.getInputSequences(), contains(
274 matchesSequenceString("AAATAAATAAAT"),
275 matchesSequenceString("AAATAAATAAAT")