1 package jalview.datamodel;
3 import java.util.Iterator;
4 import java.util.SortedMap;
5 import java.util.TreeMap;
7 import org.testng.Assert;
8 import org.testng.annotations.BeforeClass;
9 import org.testng.annotations.DataProvider;
10 import org.testng.annotations.Test;
12 import htsjdk.samtools.SAMRecord;
13 import htsjdk.samtools.SAMRecordSetBuilder;
15 public class CigarParserTest
17 @BeforeClass(alwaysRun = true)
25 @DataProvider(name = "reads")
26 public Object[][] createReadsData()
28 SortedMap<Integer, Integer> noinsertions = new TreeMap<>();
30 SortedMap<Integer, Integer> insertions = new TreeMap<>();
32 insertions.put(105, 2);
34 SortedMap<Integer, Integer> insertions2 = new TreeMap<>();
35 insertions2.put(11, 2);
37 SortedMap<Integer, Integer> insertions3 = new TreeMap<>();
38 insertions3.put(8, 3);
39 insertions3.put(105, 3);
41 String read = "CGAAGCTCTTTACCCGGAAACCATTGAAATCGGACGGTTTAGTGAAATGGAGGATCAAGTTGGGTTTGGGTTCCGTCCGAACGACGAGGAGCTCGTTGGTC";
43 return new Object[][] { { "1S84M2I14M", read, 21,
44 "----------------------cGAAGCTCTTTACCCGGAAACCATTGAAATCGGACGGTTTAGTGAAATGGAGGATCAAGTTGGGTTTGGGTTCCGTCCGAACGACGAGGAGCTCGTTGGTC",
46 { "1S84M2I14M", read, 21,
47 "----------------------cGAAGCTCTTTACCCGGAAACCATTGAAATCGGACGGTTTAGTGAAATGGAGGATCAAGTTGGGTTTGGGTTCCGTCCGAACGACGA-GGAGCTCGTTGGTC",
53 "--CGAAG---CTCTTTACCCGGAAACCATTGAAATCGGACGGTTTAGTG-AAATGGAGGATCAAGTTGGGTTTGGGTTCCGTCCGAACGACGAGGAGCTCGTTGGTC",
57 "---CGAA---GCTCTTTACCCGGAAACCATTGAAATCGGACGGTTTAGTGAAATGGAGGATCAAGTTGGGTTTGGGTTCCGTCCGAACGACGAGGAGCTCGTTGGTC",
60 "CGAAGCTTTACCCGGAAACCATTGAAATCGGACGGTTTAGTGAAATGGAGGATCAAGTTGGGTTTGGGTTCCGTCCGAACGACGAGGAGCTCGTTGGTCCC",
62 "---CGAAGC----TTTACCCGGAAACCATTGAAATCGGACGGTTTAGTGAAATGGAGGATCAAGTTGGGTTTGGGTTCCGTCCGAACGAcgaggagctcgttggtccc",
68 "--CGAAGCTCTTTACCCGGAAACCATTGAAATCGGACGGTTTAGTG-AAATGGAGGATCAAGTTGGGTTTGGGTTCCGTCCGAACGACGAGGAGCTCGTTGGTC",
72 "---CGAAGCTCTTTACCCGGAAACCATTGAAATCGGACGGTTTAGTGAAATGGAGGATCAAGTTGGGTTTGGGTTCCGTCCGAACGACGAGGAGCTCGTTGGTC",
75 "-cgaagCTCTTTACCCGGAAACCATTGAAATCGGACGGTTTAGTGAAATGGAGGATCAAGTTGGGTTTGGGTTCCGTCCGAACGACGAGGAGCTCGTTGGTC",
78 "------CGAAGCTCTTTACCCGGAAACCATTGAAATCGGACGGTTTAGTGAAATGGAGGATCAAGTTGGGTTTGGGTTCCGTCCGAACGACGAGGAGCTCGT",
82 @Test(dataProvider = "reads", groups = { "Functional" })
83 public void testParse(String cigar, String read, int start, String result,
84 SortedMap<Integer, Integer> insertions)
86 SAMRecord rec = new SAMRecord(null);
87 rec.setCigarString(cigar);
88 rec.setReadString(read);
89 rec.setAlignmentStart(start);
91 CigarParser cp = new CigarParser('-');
92 String bfresult = cp.parseCigarToSequence(rec, insertions);
94 System.out.println(result);
95 System.out.println(bfresult);
96 Assert.assertEquals(bfresult, result);
99 @Test(groups = { "Functional" })
100 public void testGetInsertions()
102 final SAMRecordSetBuilder builder = new SAMRecordSetBuilder();
103 builder.addFrag("read_1", 22, 30000, false, false,
105 builder.addFrag("read_2", 22, 28835, false, false,
107 builder.addFrag("read_3", 22, 28835, false, false, "3M1I75M2I1M", "",
109 builder.addFrag("read_4", 22, 28865, false, false, "48M3I49M", "", 0);
110 builder.addFrag("read_5", 22, 28865, false, false, "49M3I47M2D2M", "",
112 builder.addFrag("read_6", 22, 27000, false, false, "2M4I90M5S", "", 0);
113 builder.addFrag("read_7", 22, 27000, false, false, "2M1I98M", "", 0);
115 Iterator<SAMRecord> it = builder.iterator();
116 CigarParser cp = new CigarParser('-');
117 SortedMap<Integer, Integer> insertions = cp.getInsertions(it);
118 Assert.assertEquals(insertions.size(), 5);
119 Assert.assertTrue(insertions.containsKey(28838));
120 Assert.assertEquals((int) insertions.get(28838), 1);
121 Assert.assertTrue(insertions.containsKey(28885));
122 Assert.assertEquals((int) insertions.get(28885), 3);
123 Assert.assertTrue(insertions.containsKey(28913));
124 Assert.assertEquals((int) insertions.get(28913), 3);
125 Assert.assertTrue(insertions.containsKey(28914));
126 Assert.assertEquals((int) insertions.get(28914), 3);
127 Assert.assertTrue(insertions.containsKey(27002));
128 Assert.assertEquals((int) insertions.get(27002), 4);