1 package jalview.datamodel;
3 import static org.testng.AssertJUnit.assertEquals;
4 import static org.testng.AssertJUnit.assertFalse;
6 import org.testng.annotations.Test;
9 * Unit tests for SeqCigar
11 public class SeqCigarTest
14 * refactored 'as is' from main method
16 * TODO: split into separate tests
18 @Test(groups = { "Functional" })
19 public void testSomething() throws Exception
21 String o_seq = "asdfktryasdtqwrtsaslldddptyipqqwaslchvhttt";
22 Sequence s = new Sequence("MySeq", o_seq, 39, 80);
23 String orig_gapped = "----asdf------ktryas---dtqwrtsasll----dddptyipqqwa----slchvhttt";
24 Sequence s_gapped = new Sequence("MySeq", orig_gapped, 39, 80);
25 String ex_cs_gapped = "4I4M6I6M3I11M4I12M4I9M";
26 s_gapped.setDatasetSequence(s);
27 String sub_gapped_s = "------ktryas---dtqwrtsasll----dddptyipqqwa----slchvh";
28 Sequence s_subsequence_gapped = new Sequence("MySeq", sub_gapped_s, 43,
30 s_subsequence_gapped.setDatasetSequence(s);
32 SeqCigar c_null = new SeqCigar(s);
33 String cs_null = c_null.getCigarstring();
34 assertEquals("Failed to recover ungapped sequence cigar operations",
36 testCigar_string(s_gapped, ex_cs_gapped);
37 SeqCigar gen_sgapped = SeqCigar.parseCigar(s, ex_cs_gapped);
38 assertEquals("Failed parseCigar", ex_cs_gapped,
39 gen_sgapped.getCigarstring());
41 testSeqRecovery(gen_sgapped, s_gapped);
44 * Test dataset resolution
46 SeqCigar sub_gapped = new SeqCigar(s_subsequence_gapped);
47 testSeqRecovery(sub_gapped, s_subsequence_gapped);
50 * Test width functions
52 assertEquals("Failed getWidth", sub_gapped_s.length(),
53 sub_gapped.getWidth());
55 sub_gapped.getFullWidth();
56 assertFalse("hasDeletedRegions is incorrect",
57 sub_gapped.hasDeletedRegions());
59 // Test start-end region SeqCigar
60 SeqCigar sub_se_gp = new SeqCigar(s_subsequence_gapped, 8, 48);
62 "SeqCigar(seq, start, end) not properly clipped alignsequence",
63 41, sub_se_gp.getWidth());
66 * TODO: can we add assertions to the sysouts that follow?
68 System.out.println("Original sequence align:\n" + sub_gapped_s
69 + "\nReconstructed window from 8 to 48\n" + "XXXXXXXX"
70 + sub_se_gp.getSequenceString('-') + "..." + "\nCigar String:"
71 + sub_se_gp.getCigarstring() + "\n");
72 SequenceI ssgp = sub_se_gp.getSeq('-');
73 System.out.println("\t " + ssgp.getSequenceAsString());
74 for (int r = 0; r < 10; r++)
76 sub_se_gp = new SeqCigar(s_subsequence_gapped, 8, 48);
77 int sl = sub_se_gp.getWidth();
79 for (int rs = 0; rs < 10; rs++)
82 sub_se_gp.deleteRange(st, e);
83 String ssgapedseq = sub_se_gp.getSeq('-').getSequenceAsString();
84 System.out.println(st + "," + e + "\t:" + ssgapedseq);
89 SeqCigar[] set = new SeqCigar[] { new SeqCigar(s),
90 new SeqCigar(s_subsequence_gapped, 8, 48), new SeqCigar(s_gapped) };
91 Alignment al = new Alignment(set);
92 for (int i = 0; i < al.getHeight(); i++)
94 System.out.println("" + al.getSequenceAt(i).getName() + "\t"
95 + al.getSequenceAt(i).getStart() + "\t"
96 + al.getSequenceAt(i).getEnd() + "\t"
97 + al.getSequenceAt(i).getSequenceAsString());
100 System.out.println("Gapped.");
101 set = new SeqCigar[] { new SeqCigar(s),
102 new SeqCigar(s_subsequence_gapped, 8, 48), new SeqCigar(s_gapped) };
103 set[0].deleteRange(20, 25);
104 al = new Alignment(set);
105 for (int i = 0; i < al.getHeight(); i++)
107 System.out.println("" + al.getSequenceAt(i).getName() + "\t"
108 + al.getSequenceAt(i).getStart() + "\t"
109 + al.getSequenceAt(i).getEnd() + "\t"
110 + al.getSequenceAt(i).getSequenceAsString());
113 // if (!ssgapedseq.equals("ryas---dtqqwa----slchvh"))
114 // System.err.println("Subseqgaped\n------ktryas---dtqwrtsasll----dddptyipqqwa----slchvhryas---dtqwrtsasll--qwa----slchvh\n"+ssgapedseq+"\n"+sub_se_gp.getCigarstring());
118 * non rigorous testing
122 * @param ex_cs_gapped
127 protected void testCigar_string(Sequence seq, String ex_cs_gapped)
129 SeqCigar c_sgapped = new SeqCigar(seq);
130 String cs_gapped = c_sgapped.getCigarstring();
131 assertEquals("Failed getCigarstring", ex_cs_gapped, cs_gapped);
134 protected void testSeqRecovery(SeqCigar gen_sgapped, SequenceI s_gapped)
136 // this is non-rigorous - start and end recovery is not tested.
137 SequenceI gen_sgapped_s = gen_sgapped.getSeq('-');
138 // assertEquals("Couldn't reconstruct sequence", s_gapped.getSequence(),
140 if (!gen_sgapped_s.getSequence().equals(s_gapped.getSequence()))
142 // TODO: investigate errors reported here, to allow full conversion to
143 // passing JUnit assertion form
144 System.err.println("Couldn't reconstruct sequence.\n"
145 + gen_sgapped_s.getSequenceAsString() + "\n"
146 + s_gapped.getSequenceAsString());