1# Copyright 2004 by Frank Kauff. All rights reserved. 2# Revisions copyright 2008-2013 by Peter Cock. All rights reserved. 3# Revisions copyright 2009-2009 by Michiel de Hoon. All rights reserved. 4# This code is part of the Biopython distribution and governed by its 5# license. Please see the LICENSE file that should have been included 6# as part of this package. 7 8"""Tests for Ace module.""" 9 10import unittest 11 12from Bio.Sequencing import Ace 13 14 15class AceTestOne(unittest.TestCase): 16 def setUp(self): 17 self.handle = open("Ace/contig1.ace") 18 19 def tearDown(self): 20 self.handle.close() 21 22 def test_check_ACEParser(self): 23 """Test to check that ACEParser can parse the whole file into one record.""" 24 record = Ace.read(self.handle) 25 self.assertEqual(record.ncontigs, 2) 26 self.assertEqual(record.nreads, 16) 27 self.assertEqual(len(record.wa), 1) 28 self.assertEqual(record.wa[0].tag_type, "phrap_params") 29 self.assertEqual(record.wa[0].program, "phrap") 30 self.assertEqual(record.wa[0].date, "040203:114710") 31 self.assertEqual( 32 record.wa[0].info, 33 [ 34 "phrap 304_nuclsu.fasta.screen -new_ace -retain_duplicates", 35 "phrap version 0.990329", 36 ], 37 ) 38 self.assertEqual(len(record.contigs), 2) 39 self.assertEqual(len(record.contigs[0].reads), 2) 40 self.assertEqual(record.contigs[0].name, "Contig1") 41 self.assertEqual(record.contigs[0].nbases, 856) 42 self.assertEqual(record.contigs[0].nreads, 2) 43 self.assertEqual(record.contigs[0].nsegments, 31) 44 self.assertEqual(record.contigs[0].uorc, "U") 45 center = len(record.contigs[0].sequence) // 2 46 self.assertEqual(record.contigs[0].sequence[:10], "aatacgGGAT") 47 self.assertEqual( 48 record.contigs[0].sequence[center - 5 : center + 5], "ACATCATCTG" 49 ) 50 self.assertEqual(record.contigs[0].sequence[-10:], "cATCTAGtac") 51 center = len(record.contigs[0].quality) // 2 52 self.assertEqual( 53 record.contigs[0].quality[:10], [0, 0, 0, 0, 0, 0, 22, 23, 25, 28] 54 ) 55 self.assertEqual( 56 record.contigs[0].quality[center - 5 : center + 5], 57 [90, 90, 90, 90, 90, 90, 90, 90, 90, 90], 58 ) 59 self.assertEqual( 60 record.contigs[0].quality[-10:], [15, 22, 30, 24, 28, 22, 21, 15, 19, 0] 61 ) 62 self.assertEqual(len(record.contigs[0].af), 2) 63 self.assertEqual(record.contigs[0].af[1].name, "BL060c3-LR0R.b.ab1") 64 self.assertEqual(record.contigs[0].af[1].coru, "U") 65 self.assertEqual(record.contigs[0].af[1].padded_start, 1) 66 self.assertEqual(len(record.contigs[0].bs), 31) 67 self.assertEqual(record.contigs[0].bs[15].name, "BL060c3-LR5.g.ab1") 68 self.assertEqual(record.contigs[0].bs[15].padded_start, 434) 69 self.assertEqual(record.contigs[0].bs[15].padded_end, 438) 70 self.assertEqual(record.contigs[0].bs[30].name, "BL060c3-LR0R.b.ab1") 71 self.assertEqual(record.contigs[0].bs[30].padded_start, 823) 72 self.assertEqual(record.contigs[0].bs[30].padded_end, 856) 73 self.assertEqual(len(record.contigs[0].ct), 1) 74 self.assertEqual(record.contigs[0].ct[0].name, "Contig1") 75 self.assertEqual(record.contigs[0].ct[0].tag_type, "repeat") 76 self.assertEqual(record.contigs[0].ct[0].program, "phrap") 77 self.assertEqual(record.contigs[0].ct[0].padded_start, 52) 78 self.assertEqual(record.contigs[0].ct[0].padded_end, 53) 79 self.assertEqual(record.contigs[0].ct[0].date, "555456:555432") 80 self.assertEqual( 81 record.contigs[0].ct[0].info, 82 ["This is the forst line of comment for c1", "and this the second for c1"], 83 ) 84 self.assertIsNone(record.contigs[0].wa) 85 self.assertEqual(len(record.contigs[0].reads), 2) 86 self.assertEqual(record.contigs[0].reads[0].rd.name, "BL060c3-LR5.g.ab1") 87 self.assertEqual(record.contigs[0].reads[0].rd.padded_bases, 868) 88 self.assertEqual(record.contigs[0].reads[0].rd.info_items, 0) 89 self.assertEqual(record.contigs[0].reads[0].rd.read_tags, 0) 90 center = len(record.contigs[0].reads[0].rd.sequence) // 2 91 self.assertEqual(record.contigs[0].reads[0].rd.sequence[:10], "tagcgaggaa") 92 self.assertEqual( 93 record.contigs[0].reads[0].rd.sequence[center - 5 : center + 5], 94 "CCGAGGCCAA", 95 ) 96 self.assertEqual(record.contigs[0].reads[0].rd.sequence[-10:], "gaaccatcag") 97 self.assertEqual(record.contigs[0].reads[0].qa.qual_clipping_start, 80) 98 self.assertEqual(record.contigs[0].reads[0].qa.qual_clipping_end, 853) 99 self.assertEqual(record.contigs[0].reads[0].qa.align_clipping_start, 22) 100 self.assertEqual(record.contigs[0].reads[0].qa.align_clipping_end, 856) 101 self.assertIsNone(record.contigs[0].reads[0].ds) 102 self.assertEqual(len(record.contigs[0].reads[0].rt), 4) 103 self.assertEqual(record.contigs[0].reads[0].rt[0].name, "BL060c3-LR5.g.ab1") 104 self.assertEqual( 105 record.contigs[0].reads[0].rt[0].tag_type, "matchElsewhereHighQual" 106 ) 107 self.assertEqual(record.contigs[0].reads[0].rt[0].program, "phrap") 108 self.assertEqual(record.contigs[0].reads[0].rt[0].padded_start, 590) 109 self.assertEqual(record.contigs[0].reads[0].rt[0].padded_end, 607) 110 self.assertEqual(record.contigs[0].reads[0].rt[0].date, "040217:110357") 111 self.assertEqual(record.contigs[0].reads[0].rt[1].name, "BL060c3-LR5.g.ab1") 112 self.assertEqual( 113 record.contigs[0].reads[0].rt[1].tag_type, "matchElsewhereHighQual" 114 ) 115 self.assertEqual(record.contigs[0].reads[0].rt[1].program, "phrap") 116 self.assertEqual(record.contigs[0].reads[0].rt[1].padded_start, 617) 117 self.assertEqual(record.contigs[0].reads[0].rt[1].padded_end, 631) 118 self.assertEqual(record.contigs[0].reads[0].rt[1].date, "040217:110357") 119 self.assertEqual(record.contigs[0].reads[0].rt[2].name, "BL060c3-LR5.g.ab1") 120 self.assertEqual( 121 record.contigs[0].reads[0].rt[2].tag_type, "matchElsewhereHighQual" 122 ) 123 self.assertEqual(record.contigs[0].reads[0].rt[2].program, "phrap") 124 self.assertEqual(record.contigs[0].reads[0].rt[2].padded_start, 617) 125 self.assertEqual(record.contigs[0].reads[0].rt[2].padded_end, 631) 126 self.assertEqual(record.contigs[0].reads[0].rt[2].date, "040217:110357") 127 self.assertEqual(record.contigs[0].reads[0].rt[3].name, "BL060c3-LR5.g.ab1") 128 self.assertEqual( 129 record.contigs[0].reads[0].rt[3].tag_type, "matchElsewhereHighQual" 130 ) 131 self.assertEqual(record.contigs[0].reads[0].rt[3].program, "phrap") 132 self.assertEqual(record.contigs[0].reads[0].rt[3].padded_start, 617) 133 self.assertEqual(record.contigs[0].reads[0].rt[3].padded_end, 631) 134 self.assertEqual(record.contigs[0].reads[0].rt[3].date, "040217:110357") 135 136 self.assertEqual(len(record.contigs[0].reads[0].wr), 1) 137 self.assertEqual(record.contigs[0].reads[0].wr[0].name, "BL060c3-LR5.g.ab1") 138 self.assertEqual(record.contigs[0].reads[0].wr[0].aligned, "unaligned") 139 self.assertEqual(record.contigs[0].reads[0].wr[0].program, "phrap") 140 self.assertEqual(record.contigs[0].reads[0].wr[0].date, "040217:110357") 141 self.assertEqual(record.contigs[0].reads[1].rd.name, "BL060c3-LR0R.b.ab1") 142 self.assertEqual(record.contigs[0].reads[1].rd.padded_bases, 856) 143 self.assertEqual(record.contigs[0].reads[1].rd.info_items, 0) 144 self.assertEqual(record.contigs[0].reads[1].rd.read_tags, 0) 145 center = len(record.contigs[0].reads[1].rd.sequence) // 2 146 self.assertEqual(record.contigs[0].reads[1].rd.sequence[:10], "aatacgGGAT") 147 self.assertEqual( 148 record.contigs[0].reads[1].rd.sequence[center - 5 : center + 5], 149 "ACATCATCTG", 150 ) 151 self.assertEqual(record.contigs[0].reads[1].rd.sequence[-10:], "cATCTAGtac") 152 self.assertEqual(record.contigs[0].reads[1].qa.qual_clipping_start, 7) 153 self.assertEqual(record.contigs[0].reads[1].qa.qual_clipping_end, 778) 154 self.assertEqual(record.contigs[0].reads[1].qa.align_clipping_start, 1) 155 self.assertEqual(record.contigs[0].reads[1].qa.align_clipping_end, 856) 156 self.assertIsNone(record.contigs[0].reads[1].ds) 157 self.assertIsNone(record.contigs[0].reads[1].rt) 158 self.assertIsNone(record.contigs[0].reads[1].wr) 159 160 self.assertEqual(len(record.contigs[1].reads), 14) 161 self.assertEqual(record.contigs[1].name, "Contig2") 162 self.assertEqual(record.contigs[1].nbases, 3296) 163 self.assertEqual(record.contigs[1].nreads, 14) 164 self.assertEqual(record.contigs[1].nsegments, 214) 165 self.assertEqual(record.contigs[1].uorc, "U") 166 center = len(record.contigs[1].sequence) // 2 167 self.assertEqual(record.contigs[1].sequence[:10], "cacggatgat") 168 self.assertEqual( 169 record.contigs[1].sequence[center - 5 : center + 5], "TTTGAATATT" 170 ) 171 self.assertEqual(record.contigs[1].sequence[-10:], "Atccttgtag") 172 center = len(record.contigs[1].quality) // 2 173 self.assertEqual(record.contigs[1].quality[:10], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0]) 174 self.assertEqual( 175 record.contigs[1].quality[center - 5 : center + 5], 176 [90, 90, 90, 90, 90, 90, 90, 90, 90, 90], 177 ) 178 self.assertEqual( 179 record.contigs[1].quality[-10:], [24, 0, 0, 0, 0, 0, 0, 0, 0, 0] 180 ) 181 self.assertEqual(len(record.contigs[1].af), 14) 182 self.assertEqual(record.contigs[1].af[7].name, "BL060-LR3R.b.ab1") 183 self.assertEqual(record.contigs[1].af[7].coru, "C") 184 self.assertEqual(record.contigs[1].af[7].padded_start, 1601) 185 self.assertEqual(record.contigs[1].af[13].name, "BL060c2-LR0R.b.ab1") 186 self.assertEqual(record.contigs[1].af[13].coru, "C") 187 self.assertEqual(record.contigs[1].af[13].padded_start, 2445) 188 self.assertEqual(len(record.contigs[1].bs), 214) 189 self.assertEqual(record.contigs[1].bs[107].name, "BL060-c1-LR3R.b.ab1") 190 self.assertEqual(record.contigs[1].bs[107].padded_start, 2286) 191 self.assertEqual(record.contigs[1].bs[107].padded_end, 2292) 192 self.assertEqual(record.contigs[1].bs[213].name, "BL060c2-LR0R.b.ab1") 193 self.assertEqual(record.contigs[1].bs[213].padded_start, 3236) 194 self.assertEqual(record.contigs[1].bs[213].padded_end, 3296) 195 self.assertEqual(len(record.contigs[1].ct), 1) 196 self.assertEqual(record.contigs[1].ct[0].name, "Contig2") 197 self.assertEqual(record.contigs[1].ct[0].tag_type, "repeat") 198 self.assertEqual(record.contigs[1].ct[0].program, "phrap") 199 self.assertEqual(record.contigs[1].ct[0].padded_start, 42) 200 self.assertEqual(record.contigs[1].ct[0].padded_end, 43) 201 self.assertEqual(record.contigs[1].ct[0].date, "123456:765432") 202 self.assertEqual( 203 record.contigs[1].ct[0].info, 204 ["This is the forst line of comment for c2", "and this the second for c2"], 205 ) 206 self.assertEqual(len(record.contigs[1].wa), 1) 207 self.assertEqual(record.contigs[1].wa[0].tag_type, "phrap_params") 208 self.assertEqual(record.contigs[1].wa[0].program, "phrap") 209 self.assertEqual(record.contigs[1].wa[0].date, "040203:114710") 210 self.assertEqual( 211 record.contigs[1].wa[0].info, 212 [ 213 "phrap 304_nuclsu.fasta.screen -new_ace -retain_duplicates", 214 "phrap version 0.990329", 215 ], 216 ) 217 218 self.assertEqual(len(record.contigs[1].reads), 14) 219 220 # Read 0 221 self.assertEqual(record.contigs[1].reads[0].rd.name, "BL060-c1-LR12.g.ab1") 222 self.assertEqual(record.contigs[1].reads[0].rd.padded_bases, 862) 223 self.assertEqual(record.contigs[1].reads[0].rd.info_items, 0) 224 self.assertEqual(record.contigs[1].reads[0].rd.read_tags, 0) 225 center = len(record.contigs[1].reads[0].rd.sequence) // 2 226 self.assertEqual(record.contigs[1].reads[0].rd.sequence[:10], "cacggatgat") 227 self.assertEqual( 228 record.contigs[1].reads[0].rd.sequence[center - 5 : center + 5], 229 "GTTCTCGTTG", 230 ) 231 self.assertEqual(record.contigs[1].reads[0].rd.sequence[-10:], "CGTTTACCcg") 232 self.assertEqual(record.contigs[1].reads[0].qa.qual_clipping_start, 81) 233 self.assertEqual(record.contigs[1].reads[0].qa.qual_clipping_end, 842) 234 self.assertEqual(record.contigs[1].reads[0].qa.align_clipping_start, 1) 235 self.assertEqual(record.contigs[1].reads[0].qa.align_clipping_end, 862) 236 self.assertEqual( 237 record.contigs[1].reads[0].ds.chromat_file, "BL060-c1-LR12.g.ab1" 238 ) 239 self.assertEqual( 240 record.contigs[1].reads[0].ds.phd_file, "BL060-c1-LR12.g.ab1.phd.1" 241 ) 242 self.assertEqual(record.contigs[1].reads[0].ds.time, "Tue Feb 3 11:01:16 2004") 243 self.assertEqual(record.contigs[1].reads[0].ds.chem, "term") 244 self.assertEqual(record.contigs[1].reads[0].ds.dye, "big") 245 self.assertEqual(record.contigs[1].reads[0].ds.template, "") 246 self.assertEqual(record.contigs[1].reads[0].ds.direction, "") 247 self.assertIsNone(record.contigs[1].reads[0].rt) 248 self.assertIsNone(record.contigs[1].reads[0].wr) 249 250 # Read 1 251 self.assertEqual(record.contigs[1].reads[1].rd.name, "BL060-c1-LR11.g.ab1") 252 self.assertEqual(record.contigs[1].reads[1].rd.padded_bases, 880) 253 self.assertEqual(record.contigs[1].reads[1].rd.info_items, 0) 254 self.assertEqual(record.contigs[1].reads[1].rd.read_tags, 0) 255 center = len(record.contigs[1].reads[1].rd.sequence) // 2 256 self.assertEqual(record.contigs[1].reads[1].rd.sequence[:10], "ctttctgacC") 257 self.assertEqual( 258 record.contigs[1].reads[1].rd.sequence[center - 5 : center + 5], 259 "CTGTGGTTTC", 260 ) 261 self.assertEqual(record.contigs[1].reads[1].rd.sequence[-10:], "cggagttacg") 262 self.assertEqual(record.contigs[1].reads[1].qa.qual_clipping_start, 11) 263 self.assertEqual(record.contigs[1].reads[1].qa.qual_clipping_end, 807) 264 self.assertEqual(record.contigs[1].reads[1].qa.align_clipping_start, 8) 265 self.assertEqual(record.contigs[1].reads[1].qa.align_clipping_end, 880) 266 self.assertEqual( 267 record.contigs[1].reads[1].ds.chromat_file, "BL060-c1-LR11.g.ab1" 268 ) 269 self.assertEqual( 270 record.contigs[1].reads[1].ds.phd_file, "BL060-c1-LR11.g.ab1.phd.1" 271 ) 272 self.assertEqual(record.contigs[1].reads[1].ds.time, "Tue Feb 3 11:01:16 2004") 273 self.assertEqual(record.contigs[1].reads[1].ds.chem, "term") 274 self.assertEqual(record.contigs[1].reads[1].ds.dye, "big") 275 self.assertEqual(record.contigs[1].reads[1].ds.template, "") 276 self.assertEqual(record.contigs[1].reads[1].ds.direction, "") 277 self.assertEqual(len(record.contigs[1].reads[1].rt), 0) 278 self.assertIsNone(record.contigs[1].reads[1].wr) 279 280 # Read 2 281 self.assertEqual(record.contigs[1].reads[2].rd.name, "BL060-c1-LR9.g.ab1") 282 self.assertEqual(record.contigs[1].reads[2].rd.padded_bases, 864) 283 self.assertEqual(record.contigs[1].reads[2].rd.info_items, 0) 284 self.assertEqual(record.contigs[1].reads[2].rd.read_tags, 0) 285 center = len(record.contigs[1].reads[2].rd.sequence) // 2 286 self.assertEqual(record.contigs[1].reads[2].rd.sequence[:10], "cacccaCTTT") 287 self.assertEqual( 288 record.contigs[1].reads[2].rd.sequence[center - 5 : center + 5], 289 "ACCAAACATT", 290 ) 291 self.assertEqual(record.contigs[1].reads[2].rd.sequence[-10:], "GGTAGCACgc") 292 self.assertEqual(record.contigs[1].reads[2].qa.qual_clipping_start, 7) 293 self.assertEqual(record.contigs[1].reads[2].qa.qual_clipping_end, 840) 294 self.assertEqual(record.contigs[1].reads[2].qa.align_clipping_start, 4) 295 self.assertEqual(record.contigs[1].reads[2].qa.align_clipping_end, 864) 296 self.assertEqual( 297 record.contigs[1].reads[2].ds.chromat_file, "BL060-c1-LR9.g.ab1" 298 ) 299 self.assertEqual( 300 record.contigs[1].reads[2].ds.phd_file, "BL060-c1-LR9.g.ab1.phd.1" 301 ) 302 self.assertEqual(record.contigs[1].reads[2].ds.time, "Tue Feb 3 11:01:16 2004") 303 self.assertEqual(record.contigs[1].reads[2].ds.chem, "term") 304 self.assertEqual(record.contigs[1].reads[2].ds.dye, "big") 305 self.assertEqual(record.contigs[1].reads[2].ds.template, "") 306 self.assertEqual(record.contigs[1].reads[2].ds.direction, "") 307 self.assertIsNone(record.contigs[1].reads[2].rt) 308 self.assertIsNone(record.contigs[1].reads[2].wr) 309 310 # Read 3 311 self.assertEqual(record.contigs[1].reads[3].rd.name, "BL060-c1-LR17R.b.ab1") 312 self.assertEqual(record.contigs[1].reads[3].rd.padded_bases, 863) 313 self.assertEqual(record.contigs[1].reads[3].rd.info_items, 0) 314 self.assertEqual(record.contigs[1].reads[3].rd.read_tags, 0) 315 center = len(record.contigs[1].reads[3].rd.sequence) // 2 316 self.assertEqual(record.contigs[1].reads[3].rd.sequence[:10], "ctaattggcc") 317 self.assertEqual( 318 record.contigs[1].reads[3].rd.sequence[center - 5 : center + 5], 319 "GGAACCTTTC", 320 ) 321 self.assertEqual(record.contigs[1].reads[3].rd.sequence[-10:], "CAACCTgact") 322 self.assertEqual(record.contigs[1].reads[3].qa.qual_clipping_start, 63) 323 self.assertEqual(record.contigs[1].reads[3].qa.qual_clipping_end, 857) 324 self.assertEqual(record.contigs[1].reads[3].qa.align_clipping_start, 1) 325 self.assertEqual(record.contigs[1].reads[3].qa.align_clipping_end, 861) 326 self.assertEqual( 327 record.contigs[1].reads[3].ds.chromat_file, "BL060-c1-LR17R.b.ab1" 328 ) 329 self.assertEqual( 330 record.contigs[1].reads[3].ds.phd_file, "BL060-c1-LR17R.b.ab1.phd.1" 331 ) 332 self.assertEqual(record.contigs[1].reads[3].ds.time, "Tue Feb 3 11:01:16 2004") 333 self.assertEqual(record.contigs[1].reads[3].ds.chem, "term") 334 self.assertEqual(record.contigs[1].reads[3].ds.dye, "big") 335 self.assertEqual(record.contigs[1].reads[3].ds.template, "") 336 self.assertEqual(record.contigs[1].reads[3].ds.direction, "") 337 self.assertEqual(record.contigs[1].reads[3].rt, []) 338 self.assertIsNone(record.contigs[1].reads[3].wr) 339 340 # Read 4 341 self.assertEqual(record.contigs[1].reads[4].rd.name, "BL060-LR8.5.g.ab1") 342 self.assertEqual(record.contigs[1].reads[4].rd.padded_bases, 877) 343 self.assertEqual(record.contigs[1].reads[4].rd.info_items, 0) 344 self.assertEqual(record.contigs[1].reads[4].rd.read_tags, 0) 345 center = len(record.contigs[1].reads[4].rd.sequence) // 2 346 self.assertEqual(record.contigs[1].reads[4].rd.sequence[:10], "tgCTGCGGTT") 347 self.assertEqual( 348 record.contigs[1].reads[4].rd.sequence[center - 5 : center + 5], 349 "GGCAGTTTCA", 350 ) 351 self.assertEqual(record.contigs[1].reads[4].rd.sequence[-10:], "tactcataaa") 352 self.assertEqual(record.contigs[1].reads[4].qa.qual_clipping_start, 13) 353 self.assertEqual(record.contigs[1].reads[4].qa.qual_clipping_end, 729) 354 self.assertEqual(record.contigs[1].reads[4].qa.align_clipping_start, 1) 355 self.assertEqual(record.contigs[1].reads[4].qa.align_clipping_end, 877) 356 self.assertEqual( 357 record.contigs[1].reads[4].ds.chromat_file, "BL060-LR8.5.g.ab1" 358 ) 359 self.assertEqual( 360 record.contigs[1].reads[4].ds.phd_file, "BL060-LR8.5.g.ab1.phd.1" 361 ) 362 self.assertEqual(record.contigs[1].reads[4].ds.time, "Fri Nov 14 09:46:03 2003") 363 self.assertEqual(record.contigs[1].reads[4].ds.chem, "term") 364 self.assertEqual(record.contigs[1].reads[4].ds.dye, "big") 365 self.assertEqual(record.contigs[1].reads[4].ds.template, "") 366 self.assertEqual(record.contigs[1].reads[4].ds.direction, "") 367 self.assertIsNone(record.contigs[1].reads[4].rt) 368 self.assertIsNone(record.contigs[1].reads[4].wr) 369 370 # Read 5 371 self.assertEqual(record.contigs[1].reads[5].rd.name, "BL060-LR3R.b.ab1") 372 self.assertEqual(record.contigs[1].reads[5].rd.padded_bases, 874) 373 self.assertEqual(record.contigs[1].reads[5].rd.info_items, 0) 374 self.assertEqual(record.contigs[1].reads[5].rd.read_tags, 0) 375 center = len(record.contigs[1].reads[5].rd.sequence) // 2 376 self.assertEqual(record.contigs[1].reads[5].rd.sequence[:10], "ctCTTAGGAT") 377 self.assertEqual( 378 record.contigs[1].reads[5].rd.sequence[center - 5 : center + 5], 379 "AACTCACATT", 380 ) 381 self.assertEqual(record.contigs[1].reads[5].rd.sequence[-10:], "*CACCCAAac") 382 self.assertEqual(record.contigs[1].reads[5].qa.qual_clipping_start, 65) 383 self.assertEqual(record.contigs[1].reads[5].qa.qual_clipping_end, 874) 384 self.assertEqual(record.contigs[1].reads[5].qa.align_clipping_start, 1) 385 self.assertEqual(record.contigs[1].reads[5].qa.align_clipping_end, 874) 386 self.assertEqual(record.contigs[1].reads[5].ds.chromat_file, "BL060-LR3R.b.ab1") 387 self.assertEqual( 388 record.contigs[1].reads[5].ds.phd_file, "BL060-LR3R.b.ab1.phd.1" 389 ) 390 self.assertEqual(record.contigs[1].reads[5].ds.time, "Fri Nov 14 09:46:03 2003") 391 self.assertEqual(record.contigs[1].reads[5].ds.chem, "term") 392 self.assertEqual(record.contigs[1].reads[5].ds.dye, "big") 393 self.assertEqual(record.contigs[1].reads[5].ds.template, "") 394 self.assertEqual(record.contigs[1].reads[5].ds.direction, "") 395 self.assertIsNone(record.contigs[1].reads[5].rt) 396 self.assertIsNone(record.contigs[1].reads[5].wr) 397 398 # Read 6 399 self.assertEqual(record.contigs[1].reads[6].rd.name, "BL060-c1-LR3R.b.ab1") 400 self.assertEqual(record.contigs[1].reads[6].rd.padded_bases, 864) 401 self.assertEqual(record.contigs[1].reads[6].rd.info_items, 0) 402 self.assertEqual(record.contigs[1].reads[6].rd.read_tags, 0) 403 center = len(record.contigs[1].reads[6].rd.sequence) // 2 404 self.assertEqual(record.contigs[1].reads[6].rd.sequence[:10], "CCaTGTCCAA") 405 self.assertEqual( 406 record.contigs[1].reads[6].rd.sequence[center - 5 : center + 5], 407 "AAGGGTT*CA", 408 ) 409 self.assertEqual(record.contigs[1].reads[6].rd.sequence[-10:], "ACACTCGCga") 410 self.assertEqual(record.contigs[1].reads[6].qa.qual_clipping_start, 73) 411 self.assertEqual(record.contigs[1].reads[6].qa.qual_clipping_end, 862) 412 self.assertEqual(record.contigs[1].reads[6].qa.align_clipping_start, 1) 413 self.assertEqual(record.contigs[1].reads[6].qa.align_clipping_end, 863) 414 self.assertEqual( 415 record.contigs[1].reads[6].ds.chromat_file, "BL060-c1-LR3R.b.ab1" 416 ) 417 self.assertEqual( 418 record.contigs[1].reads[6].ds.phd_file, "BL060-c1-LR3R.b.ab1.phd.1" 419 ) 420 self.assertEqual(record.contigs[1].reads[6].ds.time, "Tue Feb 3 11:01:16 2004") 421 self.assertEqual(record.contigs[1].reads[6].ds.chem, "term") 422 self.assertEqual(record.contigs[1].reads[6].ds.dye, "big") 423 self.assertEqual(record.contigs[1].reads[6].ds.template, "") 424 self.assertEqual(record.contigs[1].reads[6].ds.direction, "") 425 self.assertIsNone(record.contigs[1].reads[6].rt) 426 self.assertIsNone(record.contigs[1].reads[6].wr) 427 428 # Read 7 429 self.assertEqual(record.contigs[1].reads[7].rd.name, "BL060-LR3R.b.ab1") 430 self.assertEqual(record.contigs[1].reads[7].rd.padded_bases, 857) 431 self.assertEqual(record.contigs[1].reads[7].rd.info_items, 0) 432 self.assertEqual(record.contigs[1].reads[7].rd.read_tags, 0) 433 center = len(record.contigs[1].reads[7].rd.sequence) // 2 434 self.assertEqual(record.contigs[1].reads[7].rd.sequence[:10], "agaaagagga") 435 self.assertEqual( 436 record.contigs[1].reads[7].rd.sequence[center - 5 : center + 5], 437 "nnnannnnnn", 438 ) 439 self.assertEqual(record.contigs[1].reads[7].rd.sequence[-10:], "gtctttgctc") 440 self.assertEqual(record.contigs[1].reads[7].qa.qual_clipping_start, 548) 441 self.assertEqual(record.contigs[1].reads[7].qa.qual_clipping_end, 847) 442 self.assertEqual(record.contigs[1].reads[7].qa.align_clipping_start, 442) 443 self.assertEqual(record.contigs[1].reads[7].qa.align_clipping_end, 854) 444 self.assertEqual(record.contigs[1].reads[7].ds.chromat_file, "BL060-LR3R.b.ab1") 445 self.assertEqual( 446 record.contigs[1].reads[7].ds.phd_file, "BL060-LR3R.b.ab1.phd.1" 447 ) 448 self.assertEqual(record.contigs[1].reads[7].ds.time, "Fri Jan 16 09:01:10 2004") 449 self.assertEqual(record.contigs[1].reads[7].ds.chem, "term") 450 self.assertEqual(record.contigs[1].reads[7].ds.dye, "big") 451 self.assertEqual(record.contigs[1].reads[7].ds.template, "") 452 self.assertEqual(record.contigs[1].reads[7].ds.direction, "") 453 self.assertIsNone(record.contigs[1].reads[7].rt) 454 self.assertIsNone(record.contigs[1].reads[7].wr) 455 456 # Read 8 457 self.assertEqual(record.contigs[1].reads[8].rd.name, "BL060-c1-LR7.g.ab1") 458 self.assertEqual(record.contigs[1].reads[8].rd.padded_bases, 878) 459 self.assertEqual(record.contigs[1].reads[8].rd.info_items, 0) 460 self.assertEqual(record.contigs[1].reads[8].rd.read_tags, 0) 461 center = len(record.contigs[1].reads[8].rd.sequence) // 2 462 self.assertEqual(record.contigs[1].reads[8].rd.sequence[:10], "agTttc*ctc") 463 self.assertEqual( 464 record.contigs[1].reads[8].rd.sequence[center - 5 : center + 5], 465 "TCATAAAACT", 466 ) 467 self.assertEqual(record.contigs[1].reads[8].rd.sequence[-10:], "xxxxxxxxxx") 468 self.assertEqual(record.contigs[1].reads[8].qa.qual_clipping_start, 20) 469 self.assertEqual(record.contigs[1].reads[8].qa.qual_clipping_end, 798) 470 self.assertEqual(record.contigs[1].reads[8].qa.align_clipping_start, 1) 471 self.assertEqual(record.contigs[1].reads[8].qa.align_clipping_end, 798) 472 self.assertEqual( 473 record.contigs[1].reads[8].ds.chromat_file, "BL060-c1-LR7.g.ab1" 474 ) 475 self.assertEqual( 476 record.contigs[1].reads[8].ds.phd_file, "BL060-c1-LR7.g.ab1.phd.1" 477 ) 478 self.assertEqual(record.contigs[1].reads[8].ds.time, "Tue Feb 3 11:01:16 2004") 479 self.assertEqual(record.contigs[1].reads[8].ds.chem, "term") 480 self.assertEqual(record.contigs[1].reads[8].ds.dye, "big") 481 self.assertEqual(record.contigs[1].reads[8].ds.template, "") 482 self.assertEqual(record.contigs[1].reads[8].ds.direction, "") 483 self.assertIsNone(record.contigs[1].reads[8].rt) 484 self.assertIsNone(record.contigs[1].reads[8].wr) 485 486 # Read 9 487 self.assertEqual(record.contigs[1].reads[9].rd.name, "BL060-LR7.g.ab1") 488 self.assertEqual(record.contigs[1].reads[9].rd.padded_bases, 880) 489 self.assertEqual(record.contigs[1].reads[9].rd.info_items, 0) 490 self.assertEqual(record.contigs[1].reads[9].rd.read_tags, 0) 491 center = len(record.contigs[1].reads[9].rd.sequence) // 2 492 self.assertEqual(record.contigs[1].reads[9].rd.sequence[:10], "ggctaCGCCc") 493 self.assertEqual( 494 record.contigs[1].reads[9].rd.sequence[center - 5 : center + 5], 495 "ATTGAGTTTC", 496 ) 497 self.assertEqual(record.contigs[1].reads[9].rd.sequence[-10:], "tggcgttgcg") 498 self.assertEqual(record.contigs[1].reads[9].qa.qual_clipping_start, 14) 499 self.assertEqual(record.contigs[1].reads[9].qa.qual_clipping_end, 765) 500 self.assertEqual(record.contigs[1].reads[9].qa.align_clipping_start, 4) 501 self.assertEqual(record.contigs[1].reads[9].qa.align_clipping_end, 765) 502 self.assertEqual(record.contigs[1].reads[9].ds.chromat_file, "BL060-LR7.g.ab1") 503 self.assertEqual( 504 record.contigs[1].reads[9].ds.phd_file, "BL060-LR7.g.ab1.phd.1" 505 ) 506 self.assertEqual(record.contigs[1].reads[9].ds.time, "Fri Nov 14 09:46:03 2003") 507 self.assertEqual(record.contigs[1].reads[9].ds.chem, "term") 508 self.assertEqual(record.contigs[1].reads[9].ds.dye, "big") 509 self.assertEqual(record.contigs[1].reads[9].ds.template, "") 510 self.assertEqual(record.contigs[1].reads[9].ds.direction, "") 511 self.assertIsNone(record.contigs[1].reads[9].rt) 512 self.assertIsNone(record.contigs[1].reads[9].wr) 513 514 # Read 10 515 self.assertEqual(record.contigs[1].reads[10].rd.name, "BL060c5-LR5.g.ab1") 516 self.assertEqual(record.contigs[1].reads[10].rd.padded_bases, 871) 517 self.assertEqual(record.contigs[1].reads[10].rd.info_items, 0) 518 self.assertEqual(record.contigs[1].reads[10].rd.read_tags, 0) 519 center = len(record.contigs[1].reads[10].rd.sequence) // 2 520 self.assertEqual(record.contigs[1].reads[10].rd.sequence[:10], "ggtTCGATTA") 521 self.assertEqual( 522 record.contigs[1].reads[10].rd.sequence[center - 5 : center + 5], 523 "ACCAATTGAC", 524 ) 525 self.assertEqual(record.contigs[1].reads[10].rd.sequence[-10:], "ACCACCCatt") 526 self.assertEqual(record.contigs[1].reads[10].qa.qual_clipping_start, 12) 527 self.assertEqual(record.contigs[1].reads[10].qa.qual_clipping_end, 767) 528 self.assertEqual(record.contigs[1].reads[10].qa.align_clipping_start, 1) 529 self.assertEqual(record.contigs[1].reads[10].qa.align_clipping_end, 871) 530 self.assertEqual( 531 record.contigs[1].reads[10].ds.chromat_file, "BL060c5-LR5.g.ab1" 532 ) 533 self.assertEqual( 534 record.contigs[1].reads[10].ds.phd_file, "BL060c5-LR5.g.ab1.phd.1" 535 ) 536 self.assertEqual( 537 record.contigs[1].reads[10].ds.time, "Fri Nov 14 09:46:03 2003" 538 ) 539 self.assertEqual(record.contigs[1].reads[10].ds.chem, "term") 540 self.assertEqual(record.contigs[1].reads[10].ds.dye, "big") 541 self.assertEqual(record.contigs[1].reads[10].ds.template, "") 542 self.assertEqual(record.contigs[1].reads[10].ds.direction, "") 543 self.assertIsNone(record.contigs[1].reads[10].rt) 544 self.assertIsNone(record.contigs[1].reads[10].wr) 545 546 # Read 11 547 self.assertEqual(record.contigs[1].reads[11].rd.name, "BL060c2-LR5.g.ab1") 548 self.assertEqual(record.contigs[1].reads[11].rd.padded_bases, 839) 549 self.assertEqual(record.contigs[1].reads[11].rd.info_items, 0) 550 self.assertEqual(record.contigs[1].reads[11].rd.read_tags, 0) 551 center = len(record.contigs[1].reads[11].rd.sequence) // 2 552 self.assertEqual(record.contigs[1].reads[11].rd.sequence[:10], "ggttcatatg") 553 self.assertEqual( 554 record.contigs[1].reads[11].rd.sequence[center - 5 : center + 5], 555 "TAAAATCAGT", 556 ) 557 self.assertEqual(record.contigs[1].reads[11].rd.sequence[-10:], "TCTTGCaata") 558 self.assertEqual(record.contigs[1].reads[11].qa.qual_clipping_start, 11) 559 self.assertEqual(record.contigs[1].reads[11].qa.qual_clipping_end, 757) 560 self.assertEqual(record.contigs[1].reads[11].qa.align_clipping_start, 10) 561 self.assertEqual(record.contigs[1].reads[11].qa.align_clipping_end, 835) 562 self.assertIsNone(record.contigs[1].reads[11].ds) 563 self.assertEqual(len(record.contigs[1].reads[11].rt), 1) 564 self.assertEqual(record.contigs[1].reads[11].rt[0].name, "BL060c2-LR5.g.ab1") 565 self.assertEqual( 566 record.contigs[1].reads[11].rt[0].tag_type, "matchElsewhereHighQual" 567 ) 568 self.assertEqual(record.contigs[1].reads[11].rt[0].program, "phrap") 569 self.assertEqual(record.contigs[1].reads[11].rt[0].padded_start, 617) 570 self.assertEqual(record.contigs[1].reads[11].rt[0].padded_end, 631) 571 self.assertEqual(record.contigs[1].reads[11].rt[0].date, "040217:110357") 572 self.assertIsNone(record.contigs[1].reads[11].wr) 573 574 # Read 12 575 self.assertEqual(record.contigs[1].reads[12].rd.name, "BL060c5-LR0R.b.ab1") 576 self.assertEqual(record.contigs[1].reads[12].rd.padded_bases, 855) 577 self.assertEqual(record.contigs[1].reads[12].rd.info_items, 0) 578 self.assertEqual(record.contigs[1].reads[12].rd.read_tags, 0) 579 center = len(record.contigs[1].reads[12].rd.sequence) // 2 580 self.assertEqual(record.contigs[1].reads[12].rd.sequence[:10], "cACTCGCGTA") 581 self.assertEqual( 582 record.contigs[1].reads[12].rd.sequence[center - 5 : center + 5], 583 "CTCGTAAAAT", 584 ) 585 self.assertEqual(record.contigs[1].reads[12].rd.sequence[-10:], "aacccctgca") 586 self.assertEqual(record.contigs[1].reads[12].qa.qual_clipping_start, 94) 587 self.assertEqual(record.contigs[1].reads[12].qa.qual_clipping_end, 835) 588 self.assertEqual(record.contigs[1].reads[12].qa.align_clipping_start, 1) 589 self.assertEqual(record.contigs[1].reads[12].qa.align_clipping_end, 847) 590 self.assertEqual( 591 record.contigs[1].reads[12].ds.chromat_file, "BL060c5-LR0R.b.ab1" 592 ) 593 self.assertEqual( 594 record.contigs[1].reads[12].ds.phd_file, "BL060c5-LR0R.b.ab1.phd.1" 595 ) 596 self.assertEqual( 597 record.contigs[1].reads[12].ds.time, "Wed Nov 12 08:16:30 2003" 598 ) 599 self.assertEqual(record.contigs[1].reads[12].ds.chem, "term") 600 self.assertEqual(record.contigs[1].reads[12].ds.dye, "big") 601 self.assertEqual(record.contigs[1].reads[12].ds.template, "") 602 self.assertEqual(record.contigs[1].reads[12].ds.direction, "") 603 self.assertEqual(len(record.contigs[1].reads[12].rt), 1) 604 self.assertEqual(record.contigs[1].reads[12].rt[0].name, "BL060c5-LR0R.b.ab1") 605 self.assertEqual( 606 record.contigs[1].reads[12].rt[0].tag_type, "matchElsewhereHighQual" 607 ) 608 self.assertEqual(record.contigs[1].reads[12].rt[0].program, "phrap") 609 self.assertEqual(record.contigs[1].reads[12].rt[0].padded_start, 617) 610 self.assertEqual(record.contigs[1].reads[12].rt[0].padded_end, 631) 611 self.assertEqual(record.contigs[1].reads[12].rt[0].date, "040217:110357") 612 self.assertIsNone(record.contigs[1].reads[12].wr) 613 614 # Read 13 615 self.assertEqual(record.contigs[1].reads[13].rd.name, "BL060c2-LR0R.b.ab1") 616 self.assertEqual(record.contigs[1].reads[13].rd.padded_bases, 852) 617 self.assertEqual(record.contigs[1].reads[13].rd.info_items, 0) 618 self.assertEqual(record.contigs[1].reads[13].rd.read_tags, 0) 619 center = len(record.contigs[1].reads[13].rd.sequence) // 2 620 self.assertEqual(record.contigs[1].reads[13].rd.sequence[:10], "cgCGTa*tTG") 621 self.assertEqual( 622 record.contigs[1].reads[13].rd.sequence[center - 5 : center + 5], 623 "GTAAAATATT", 624 ) 625 self.assertEqual(record.contigs[1].reads[13].rd.sequence[-10:], "Atccttgtag") 626 self.assertEqual(record.contigs[1].reads[13].qa.qual_clipping_start, 33) 627 self.assertEqual(record.contigs[1].reads[13].qa.qual_clipping_end, 831) 628 self.assertEqual(record.contigs[1].reads[13].qa.align_clipping_start, 1) 629 self.assertEqual(record.contigs[1].reads[13].qa.align_clipping_end, 852) 630 self.assertEqual( 631 record.contigs[1].reads[13].ds.chromat_file, "BL060c2-LR0R.b.ab1" 632 ) 633 self.assertEqual( 634 record.contigs[1].reads[13].ds.phd_file, "BL060c2-LR0R.b.ab1.phd.1" 635 ) 636 self.assertEqual( 637 record.contigs[1].reads[13].ds.time, "Wed Nov 12 08:16:29 2003" 638 ) 639 self.assertEqual(record.contigs[1].reads[13].ds.chem, "term") 640 self.assertEqual(record.contigs[1].reads[13].ds.dye, "big") 641 self.assertEqual(record.contigs[1].reads[13].ds.template, "") 642 self.assertEqual(record.contigs[1].reads[13].ds.direction, "") 643 self.assertEqual(record.contigs[1].reads[13].rt, []) 644 self.assertEqual(len(record.contigs[1].reads[13].wr), 1) 645 self.assertEqual(record.contigs[1].reads[13].wr[0].name, "BL060c2-LR0R.b.ab1") 646 self.assertEqual(record.contigs[1].reads[13].wr[0].aligned, "unaligned") 647 self.assertEqual(record.contigs[1].reads[13].wr[0].program, "phrap") 648 self.assertEqual(record.contigs[1].reads[13].wr[0].date, "040217:110357") 649 650 def test_check_record_parser(self): 651 """Test to check that contig parser parses each contig into a contig.""" 652 contigs = Ace.parse(self.handle) 653 654 # First contig 655 contig = next(contigs) 656 self.assertEqual(len(contig.reads), 2) 657 self.assertEqual(contig.name, "Contig1") 658 self.assertEqual(contig.nbases, 856) 659 self.assertEqual(contig.nreads, 2) 660 self.assertEqual(contig.nsegments, 31) 661 self.assertEqual(contig.uorc, "U") 662 center = len(contig.sequence) // 2 663 self.assertEqual(contig.sequence[:10], "aatacgGGAT") 664 self.assertEqual(contig.sequence[center - 5 : center + 5], "ACATCATCTG") 665 self.assertEqual(contig.sequence[-10:], "cATCTAGtac") 666 center = len(contig.quality) // 2 667 self.assertEqual(contig.quality[:10], [0, 0, 0, 0, 0, 0, 22, 23, 25, 28]) 668 self.assertEqual( 669 contig.quality[center - 5 : center + 5], 670 [90, 90, 90, 90, 90, 90, 90, 90, 90, 90], 671 ) 672 self.assertEqual(contig.quality[-10:], [15, 22, 30, 24, 28, 22, 21, 15, 19, 0]) 673 self.assertEqual(len(contig.af), 2) 674 self.assertEqual(contig.af[1].name, "BL060c3-LR0R.b.ab1") 675 self.assertEqual(contig.af[1].coru, "U") 676 self.assertEqual(contig.af[1].padded_start, 1) 677 self.assertEqual(len(contig.bs), 31) 678 self.assertEqual(contig.bs[15].name, "BL060c3-LR5.g.ab1") 679 self.assertEqual(contig.bs[15].padded_start, 434) 680 self.assertEqual(contig.bs[15].padded_end, 438) 681 self.assertEqual(contig.bs[30].name, "BL060c3-LR0R.b.ab1") 682 self.assertEqual(contig.bs[30].padded_start, 823) 683 self.assertEqual(contig.bs[30].padded_end, 856) 684 self.assertIsNone(contig.ct) 685 self.assertIsNone(contig.wa) 686 self.assertEqual(len(contig.reads), 2) 687 self.assertEqual(contig.reads[0].rd.name, "BL060c3-LR5.g.ab1") 688 self.assertEqual(contig.reads[0].rd.padded_bases, 868) 689 self.assertEqual(contig.reads[0].rd.info_items, 0) 690 self.assertEqual(contig.reads[0].rd.read_tags, 0) 691 center = len(contig.reads[0].rd.sequence) // 2 692 self.assertEqual(contig.reads[0].rd.sequence[:10], "tagcgaggaa") 693 self.assertEqual( 694 contig.reads[0].rd.sequence[center - 5 : center + 5], "CCGAGGCCAA" 695 ) 696 self.assertEqual(contig.reads[0].rd.sequence[-10:], "gaaccatcag") 697 self.assertEqual(contig.reads[0].qa.qual_clipping_start, 80) 698 self.assertEqual(contig.reads[0].qa.qual_clipping_end, 853) 699 self.assertEqual(contig.reads[0].qa.align_clipping_start, 22) 700 self.assertEqual(contig.reads[0].qa.align_clipping_end, 856) 701 self.assertIsNone(contig.reads[0].ds) 702 self.assertEqual(len(contig.reads[0].rt), 2) 703 self.assertEqual(contig.reads[0].rt[0].name, "BL060c3-LR5.g.ab1") 704 self.assertEqual(contig.reads[0].rt[0].tag_type, "matchElsewhereHighQual") 705 self.assertEqual(contig.reads[0].rt[0].program, "phrap") 706 self.assertEqual(contig.reads[0].rt[0].padded_start, 590) 707 self.assertEqual(contig.reads[0].rt[0].padded_end, 607) 708 self.assertEqual(contig.reads[0].rt[0].date, "040217:110357") 709 self.assertEqual(contig.reads[0].rt[1].name, "BL060c3-LR5.g.ab1") 710 self.assertEqual(contig.reads[0].rt[1].tag_type, "matchElsewhereHighQual") 711 self.assertEqual(contig.reads[0].rt[1].program, "phrap") 712 self.assertEqual(contig.reads[0].rt[1].padded_start, 617) 713 self.assertEqual(contig.reads[0].rt[1].padded_end, 631) 714 self.assertEqual(contig.reads[0].rt[1].date, "040217:110357") 715 716 self.assertEqual(len(contig.reads[0].wr), 1) 717 self.assertEqual(contig.reads[0].wr[0].name, "BL060c3-LR5.g.ab1") 718 self.assertEqual(contig.reads[0].wr[0].aligned, "unaligned") 719 self.assertEqual(contig.reads[0].wr[0].program, "phrap") 720 self.assertEqual(contig.reads[0].wr[0].date, "040217:110357") 721 722 self.assertEqual(contig.reads[1].rd.name, "BL060c3-LR0R.b.ab1") 723 self.assertEqual(contig.reads[1].rd.padded_bases, 856) 724 self.assertEqual(contig.reads[1].rd.info_items, 0) 725 self.assertEqual(contig.reads[1].rd.read_tags, 0) 726 center = len(contig.reads[1].rd.sequence) // 2 727 self.assertEqual(contig.reads[1].rd.sequence[:10], "aatacgGGAT") 728 self.assertEqual( 729 contig.reads[1].rd.sequence[center - 5 : center + 5], "ACATCATCTG" 730 ) 731 self.assertEqual(contig.reads[1].rd.sequence[-10:], "cATCTAGtac") 732 self.assertEqual(contig.reads[1].qa.qual_clipping_start, 7) 733 self.assertEqual(contig.reads[1].qa.qual_clipping_end, 778) 734 self.assertEqual(contig.reads[1].qa.align_clipping_start, 1) 735 self.assertEqual(contig.reads[1].qa.align_clipping_end, 856) 736 self.assertIsNone(contig.reads[1].ds) 737 self.assertIsNone(contig.reads[1].rt) 738 self.assertIsNone(contig.reads[1].wr) 739 740 # Second contig 741 contig = next(contigs) 742 self.assertEqual(len(contig.reads), 14) 743 self.assertEqual(contig.name, "Contig2") 744 self.assertEqual(contig.nbases, 3296) 745 self.assertEqual(contig.nreads, 14) 746 self.assertEqual(contig.nsegments, 214) 747 self.assertEqual(contig.uorc, "U") 748 center = len(contig.sequence) // 2 749 self.assertEqual(contig.sequence[:10], "cacggatgat") 750 self.assertEqual(contig.sequence[center - 5 : center + 5], "TTTGAATATT") 751 self.assertEqual(contig.sequence[-10:], "Atccttgtag") 752 center = len(contig.quality) // 2 753 self.assertEqual(contig.quality[:10], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0]) 754 self.assertEqual( 755 contig.quality[center - 5 : center + 5], 756 [90, 90, 90, 90, 90, 90, 90, 90, 90, 90], 757 ) 758 self.assertEqual(contig.quality[-10:], [24, 0, 0, 0, 0, 0, 0, 0, 0, 0]) 759 self.assertEqual(len(contig.af), 14) 760 self.assertEqual(contig.af[7].name, "BL060-LR3R.b.ab1") 761 self.assertEqual(contig.af[7].coru, "C") 762 self.assertEqual(contig.af[7].padded_start, 1601) 763 self.assertEqual(contig.af[13].name, "BL060c2-LR0R.b.ab1") 764 self.assertEqual(contig.af[13].coru, "C") 765 self.assertEqual(contig.af[13].padded_start, 2445) 766 self.assertEqual(len(contig.bs), 214) 767 self.assertEqual(contig.bs[107].name, "BL060-c1-LR3R.b.ab1") 768 self.assertEqual(contig.bs[107].padded_start, 2286) 769 self.assertEqual(contig.bs[107].padded_end, 2292) 770 self.assertEqual(contig.bs[213].name, "BL060c2-LR0R.b.ab1") 771 self.assertEqual(contig.bs[213].padded_start, 3236) 772 self.assertEqual(contig.bs[213].padded_end, 3296) 773 self.assertEqual(len(contig.ct), 3) 774 self.assertEqual(contig.ct[0].name, "Contig2") 775 self.assertEqual(contig.ct[0].tag_type, "repeat") 776 self.assertEqual(contig.ct[0].program, "phrap") 777 self.assertEqual(contig.ct[0].padded_start, 42) 778 self.assertEqual(contig.ct[0].padded_end, 43) 779 self.assertEqual(contig.ct[0].date, "123456:765432") 780 self.assertEqual( 781 contig.ct[0].info, 782 ["This is the forst line of comment for c2", "and this the second for c2"], 783 ) 784 self.assertEqual(contig.ct[1].name, "unrelated_Contig") 785 self.assertEqual(contig.ct[1].tag_type, "repeat") 786 self.assertEqual(contig.ct[1].program, "phrap") 787 self.assertEqual(contig.ct[1].padded_start, 1142) 788 self.assertEqual(contig.ct[1].padded_end, 143) 789 self.assertEqual(contig.ct[1].date, "122226:722232") 790 self.assertEqual( 791 contig.ct[1].info, 792 [ 793 "This is the forst line of comment for the unrelated ct tag", 794 "and this the second", 795 ], 796 ) 797 798 self.assertEqual(contig.ct[2].name, "Contig1") 799 self.assertEqual(contig.ct[2].tag_type, "repeat") 800 self.assertEqual(contig.ct[2].program, "phrap") 801 self.assertEqual(contig.ct[2].padded_start, 52) 802 self.assertEqual(contig.ct[2].padded_end, 53) 803 self.assertEqual(contig.ct[2].date, "555456:555432") 804 self.assertEqual( 805 contig.ct[2].info, 806 ["This is the forst line of comment for c1", "and this the second for c1"], 807 ) 808 809 self.assertEqual(len(contig.wa), 1) 810 self.assertEqual(contig.wa[0].tag_type, "phrap_params") 811 self.assertEqual(contig.wa[0].program, "phrap") 812 self.assertEqual(contig.wa[0].date, "040203:114710") 813 self.assertEqual( 814 contig.wa[0].info, 815 [ 816 "phrap 304_nuclsu.fasta.screen -new_ace -retain_duplicates", 817 "phrap version 0.990329", 818 ], 819 ) 820 821 self.assertEqual(len(contig.reads), 14) 822 823 # Read 0 824 self.assertEqual(contig.reads[0].rd.name, "BL060-c1-LR12.g.ab1") 825 self.assertEqual(contig.reads[0].rd.padded_bases, 862) 826 self.assertEqual(contig.reads[0].rd.info_items, 0) 827 self.assertEqual(contig.reads[0].rd.read_tags, 0) 828 center = len(contig.reads[0].rd.sequence) // 2 829 self.assertEqual(contig.reads[0].rd.sequence[:10], "cacggatgat") 830 self.assertEqual( 831 contig.reads[0].rd.sequence[center - 5 : center + 5], "GTTCTCGTTG" 832 ) 833 self.assertEqual(contig.reads[0].rd.sequence[-10:], "CGTTTACCcg") 834 self.assertEqual(contig.reads[0].qa.qual_clipping_start, 81) 835 self.assertEqual(contig.reads[0].qa.qual_clipping_end, 842) 836 self.assertEqual(contig.reads[0].qa.align_clipping_start, 1) 837 self.assertEqual(contig.reads[0].qa.align_clipping_end, 862) 838 self.assertEqual(contig.reads[0].ds.chromat_file, "BL060-c1-LR12.g.ab1") 839 self.assertEqual(contig.reads[0].ds.phd_file, "BL060-c1-LR12.g.ab1.phd.1") 840 self.assertEqual(contig.reads[0].ds.time, "Tue Feb 3 11:01:16 2004") 841 self.assertEqual(contig.reads[0].ds.chem, "term") 842 self.assertEqual(contig.reads[0].ds.dye, "big") 843 self.assertEqual(contig.reads[0].ds.template, "") 844 self.assertEqual(contig.reads[0].ds.direction, "") 845 self.assertIsNone(contig.reads[0].rt) 846 self.assertIsNone(contig.reads[0].wr) 847 848 # Read 1 849 self.assertEqual(contig.reads[1].rd.name, "BL060-c1-LR11.g.ab1") 850 self.assertEqual(contig.reads[1].rd.padded_bases, 880) 851 self.assertEqual(contig.reads[1].rd.info_items, 0) 852 self.assertEqual(contig.reads[1].rd.read_tags, 0) 853 center = len(contig.reads[1].rd.sequence) // 2 854 self.assertEqual(contig.reads[1].rd.sequence[:10], "ctttctgacC") 855 self.assertEqual( 856 contig.reads[1].rd.sequence[center - 5 : center + 5], "CTGTGGTTTC" 857 ) 858 self.assertEqual(contig.reads[1].rd.sequence[-10:], "cggagttacg") 859 self.assertEqual(contig.reads[1].qa.qual_clipping_start, 11) 860 self.assertEqual(contig.reads[1].qa.qual_clipping_end, 807) 861 self.assertEqual(contig.reads[1].qa.align_clipping_start, 8) 862 self.assertEqual(contig.reads[1].qa.align_clipping_end, 880) 863 self.assertEqual(contig.reads[1].ds.chromat_file, "BL060-c1-LR11.g.ab1") 864 self.assertEqual(contig.reads[1].ds.phd_file, "BL060-c1-LR11.g.ab1.phd.1") 865 self.assertEqual(contig.reads[1].ds.time, "Tue Feb 3 11:01:16 2004") 866 self.assertEqual(contig.reads[1].ds.chem, "term") 867 self.assertEqual(contig.reads[1].ds.dye, "big") 868 self.assertEqual(contig.reads[1].ds.template, "") 869 self.assertEqual(contig.reads[1].ds.direction, "") 870 self.assertEqual(len(contig.reads[1].rt), 1) 871 self.assertEqual(contig.reads[1].rt[0].name, "BL060c3-LR5.g.ab1") 872 self.assertEqual(contig.reads[1].rt[0].tag_type, "matchElsewhereHighQual") 873 self.assertEqual(contig.reads[1].rt[0].program, "phrap") 874 self.assertEqual(contig.reads[1].rt[0].padded_start, 617) 875 self.assertEqual(contig.reads[1].rt[0].padded_end, 631) 876 self.assertEqual(contig.reads[1].rt[0].date, "040217:110357") 877 self.assertIsNone(contig.reads[1].wr) 878 879 # Read 2 880 self.assertEqual(contig.reads[2].rd.name, "BL060-c1-LR9.g.ab1") 881 self.assertEqual(contig.reads[2].rd.padded_bases, 864) 882 self.assertEqual(contig.reads[2].rd.info_items, 0) 883 self.assertEqual(contig.reads[2].rd.read_tags, 0) 884 center = len(contig.reads[2].rd.sequence) // 2 885 self.assertEqual(contig.reads[2].rd.sequence[:10], "cacccaCTTT") 886 self.assertEqual( 887 contig.reads[2].rd.sequence[center - 5 : center + 5], "ACCAAACATT" 888 ) 889 self.assertEqual(contig.reads[2].rd.sequence[-10:], "GGTAGCACgc") 890 self.assertEqual(contig.reads[2].qa.qual_clipping_start, 7) 891 self.assertEqual(contig.reads[2].qa.qual_clipping_end, 840) 892 self.assertEqual(contig.reads[2].qa.align_clipping_start, 4) 893 self.assertEqual(contig.reads[2].qa.align_clipping_end, 864) 894 self.assertEqual(contig.reads[2].ds.chromat_file, "BL060-c1-LR9.g.ab1") 895 self.assertEqual(contig.reads[2].ds.phd_file, "BL060-c1-LR9.g.ab1.phd.1") 896 self.assertEqual(contig.reads[2].ds.time, "Tue Feb 3 11:01:16 2004") 897 self.assertEqual(contig.reads[2].ds.chem, "term") 898 self.assertEqual(contig.reads[2].ds.dye, "big") 899 self.assertEqual(contig.reads[2].ds.template, "") 900 self.assertEqual(contig.reads[2].ds.direction, "") 901 self.assertIsNone(contig.reads[2].rt) 902 self.assertIsNone(contig.reads[2].wr) 903 904 # Read 3 905 self.assertEqual(contig.reads[3].rd.name, "BL060-c1-LR17R.b.ab1") 906 self.assertEqual(contig.reads[3].rd.padded_bases, 863) 907 self.assertEqual(contig.reads[3].rd.info_items, 0) 908 self.assertEqual(contig.reads[3].rd.read_tags, 0) 909 center = len(contig.reads[3].rd.sequence) // 2 910 self.assertEqual(contig.reads[3].rd.sequence[:10], "ctaattggcc") 911 self.assertEqual( 912 contig.reads[3].rd.sequence[center - 5 : center + 5], "GGAACCTTTC" 913 ) 914 self.assertEqual(contig.reads[3].rd.sequence[-10:], "CAACCTgact") 915 self.assertEqual(contig.reads[3].qa.qual_clipping_start, 63) 916 self.assertEqual(contig.reads[3].qa.qual_clipping_end, 857) 917 self.assertEqual(contig.reads[3].qa.align_clipping_start, 1) 918 self.assertEqual(contig.reads[3].qa.align_clipping_end, 861) 919 self.assertEqual(contig.reads[3].ds.chromat_file, "BL060-c1-LR17R.b.ab1") 920 self.assertEqual(contig.reads[3].ds.phd_file, "BL060-c1-LR17R.b.ab1.phd.1") 921 self.assertEqual(contig.reads[3].ds.time, "Tue Feb 3 11:01:16 2004") 922 self.assertEqual(contig.reads[3].ds.chem, "term") 923 self.assertEqual(contig.reads[3].ds.dye, "big") 924 self.assertEqual(contig.reads[3].ds.template, "") 925 self.assertEqual(contig.reads[3].ds.direction, "") 926 self.assertEqual(len(contig.reads[3].rt), 1) 927 self.assertEqual(contig.reads[3].rt[0].name, "BL060c3-LR5.g.ab1") 928 self.assertEqual(contig.reads[3].rt[0].tag_type, "matchElsewhereHighQual") 929 self.assertEqual(contig.reads[3].rt[0].program, "phrap") 930 self.assertEqual(contig.reads[3].rt[0].padded_start, 617) 931 self.assertEqual(contig.reads[3].rt[0].padded_end, 631) 932 self.assertEqual(contig.reads[3].rt[0].date, "040217:110357") 933 self.assertIsNone(contig.reads[3].wr) 934 935 # Read 4 936 self.assertEqual(contig.reads[4].rd.name, "BL060-LR8.5.g.ab1") 937 self.assertEqual(contig.reads[4].rd.padded_bases, 877) 938 self.assertEqual(contig.reads[4].rd.info_items, 0) 939 self.assertEqual(contig.reads[4].rd.read_tags, 0) 940 center = len(contig.reads[4].rd.sequence) // 2 941 self.assertEqual(contig.reads[4].rd.sequence[:10], "tgCTGCGGTT") 942 self.assertEqual( 943 contig.reads[4].rd.sequence[center - 5 : center + 5], "GGCAGTTTCA" 944 ) 945 self.assertEqual(contig.reads[4].rd.sequence[-10:], "tactcataaa") 946 self.assertEqual(contig.reads[4].qa.qual_clipping_start, 13) 947 self.assertEqual(contig.reads[4].qa.qual_clipping_end, 729) 948 self.assertEqual(contig.reads[4].qa.align_clipping_start, 1) 949 self.assertEqual(contig.reads[4].qa.align_clipping_end, 877) 950 self.assertEqual(contig.reads[4].ds.chromat_file, "BL060-LR8.5.g.ab1") 951 self.assertEqual(contig.reads[4].ds.phd_file, "BL060-LR8.5.g.ab1.phd.1") 952 self.assertEqual(contig.reads[4].ds.time, "Fri Nov 14 09:46:03 2003") 953 self.assertEqual(contig.reads[4].ds.chem, "term") 954 self.assertEqual(contig.reads[4].ds.dye, "big") 955 self.assertEqual(contig.reads[4].ds.template, "") 956 self.assertEqual(contig.reads[4].ds.direction, "") 957 self.assertIsNone(contig.reads[4].rt) 958 self.assertIsNone(contig.reads[4].wr) 959 960 # Read 5 961 self.assertEqual(contig.reads[5].rd.name, "BL060-LR3R.b.ab1") 962 self.assertEqual(contig.reads[5].rd.padded_bases, 874) 963 self.assertEqual(contig.reads[5].rd.info_items, 0) 964 self.assertEqual(contig.reads[5].rd.read_tags, 0) 965 center = len(contig.reads[5].rd.sequence) // 2 966 self.assertEqual(contig.reads[5].rd.sequence[:10], "ctCTTAGGAT") 967 self.assertEqual( 968 contig.reads[5].rd.sequence[center - 5 : center + 5], "AACTCACATT" 969 ) 970 self.assertEqual(contig.reads[5].rd.sequence[-10:], "*CACCCAAac") 971 self.assertEqual(contig.reads[5].qa.qual_clipping_start, 65) 972 self.assertEqual(contig.reads[5].qa.qual_clipping_end, 874) 973 self.assertEqual(contig.reads[5].qa.align_clipping_start, 1) 974 self.assertEqual(contig.reads[5].qa.align_clipping_end, 874) 975 self.assertEqual(contig.reads[5].ds.chromat_file, "BL060-LR3R.b.ab1") 976 self.assertEqual(contig.reads[5].ds.phd_file, "BL060-LR3R.b.ab1.phd.1") 977 self.assertEqual(contig.reads[5].ds.time, "Fri Nov 14 09:46:03 2003") 978 self.assertEqual(contig.reads[5].ds.chem, "term") 979 self.assertEqual(contig.reads[5].ds.dye, "big") 980 self.assertEqual(contig.reads[5].ds.template, "") 981 self.assertEqual(contig.reads[5].ds.direction, "") 982 self.assertIsNone(contig.reads[5].rt) 983 self.assertIsNone(contig.reads[5].wr) 984 985 # Read 6 986 self.assertEqual(contig.reads[6].rd.name, "BL060-c1-LR3R.b.ab1") 987 self.assertEqual(contig.reads[6].rd.padded_bases, 864) 988 self.assertEqual(contig.reads[6].rd.info_items, 0) 989 self.assertEqual(contig.reads[6].rd.read_tags, 0) 990 center = len(contig.reads[6].rd.sequence) // 2 991 self.assertEqual(contig.reads[6].rd.sequence[:10], "CCaTGTCCAA") 992 self.assertEqual( 993 contig.reads[6].rd.sequence[center - 5 : center + 5], "AAGGGTT*CA" 994 ) 995 self.assertEqual(contig.reads[6].rd.sequence[-10:], "ACACTCGCga") 996 self.assertEqual(contig.reads[6].qa.qual_clipping_start, 73) 997 self.assertEqual(contig.reads[6].qa.qual_clipping_end, 862) 998 self.assertEqual(contig.reads[6].qa.align_clipping_start, 1) 999 self.assertEqual(contig.reads[6].qa.align_clipping_end, 863) 1000 self.assertEqual(contig.reads[6].ds.chromat_file, "BL060-c1-LR3R.b.ab1") 1001 self.assertEqual(contig.reads[6].ds.phd_file, "BL060-c1-LR3R.b.ab1.phd.1") 1002 self.assertEqual(contig.reads[6].ds.time, "Tue Feb 3 11:01:16 2004") 1003 self.assertEqual(contig.reads[6].ds.chem, "term") 1004 self.assertEqual(contig.reads[6].ds.dye, "big") 1005 self.assertEqual(contig.reads[6].ds.template, "") 1006 self.assertEqual(contig.reads[6].ds.direction, "") 1007 self.assertIsNone(contig.reads[6].rt) 1008 self.assertIsNone(contig.reads[6].wr) 1009 1010 # Read 7 1011 self.assertEqual(contig.reads[7].rd.name, "BL060-LR3R.b.ab1") 1012 self.assertEqual(contig.reads[7].rd.padded_bases, 857) 1013 self.assertEqual(contig.reads[7].rd.info_items, 0) 1014 self.assertEqual(contig.reads[7].rd.read_tags, 0) 1015 center = len(contig.reads[7].rd.sequence) // 2 1016 self.assertEqual(contig.reads[7].rd.sequence[:10], "agaaagagga") 1017 self.assertEqual( 1018 contig.reads[7].rd.sequence[center - 5 : center + 5], "nnnannnnnn" 1019 ) 1020 self.assertEqual(contig.reads[7].rd.sequence[-10:], "gtctttgctc") 1021 self.assertEqual(contig.reads[7].qa.qual_clipping_start, 548) 1022 self.assertEqual(contig.reads[7].qa.qual_clipping_end, 847) 1023 self.assertEqual(contig.reads[7].qa.align_clipping_start, 442) 1024 self.assertEqual(contig.reads[7].qa.align_clipping_end, 854) 1025 self.assertEqual(contig.reads[7].ds.chromat_file, "BL060-LR3R.b.ab1") 1026 self.assertEqual(contig.reads[7].ds.phd_file, "BL060-LR3R.b.ab1.phd.1") 1027 self.assertEqual(contig.reads[7].ds.time, "Fri Jan 16 09:01:10 2004") 1028 self.assertEqual(contig.reads[7].ds.chem, "term") 1029 self.assertEqual(contig.reads[7].ds.dye, "big") 1030 self.assertEqual(contig.reads[7].ds.template, "") 1031 self.assertEqual(contig.reads[7].ds.direction, "") 1032 self.assertIsNone(contig.reads[7].rt) 1033 self.assertIsNone(contig.reads[7].wr) 1034 1035 # Read 8 1036 self.assertEqual(contig.reads[8].rd.name, "BL060-c1-LR7.g.ab1") 1037 self.assertEqual(contig.reads[8].rd.padded_bases, 878) 1038 self.assertEqual(contig.reads[8].rd.info_items, 0) 1039 self.assertEqual(contig.reads[8].rd.read_tags, 0) 1040 center = len(contig.reads[8].rd.sequence) // 2 1041 self.assertEqual(contig.reads[8].rd.sequence[:10], "agTttc*ctc") 1042 self.assertEqual( 1043 contig.reads[8].rd.sequence[center - 5 : center + 5], "TCATAAAACT" 1044 ) 1045 self.assertEqual(contig.reads[8].rd.sequence[-10:], "xxxxxxxxxx") 1046 self.assertEqual(contig.reads[8].qa.qual_clipping_start, 20) 1047 self.assertEqual(contig.reads[8].qa.qual_clipping_end, 798) 1048 self.assertEqual(contig.reads[8].qa.align_clipping_start, 1) 1049 self.assertEqual(contig.reads[8].qa.align_clipping_end, 798) 1050 self.assertEqual(contig.reads[8].ds.chromat_file, "BL060-c1-LR7.g.ab1") 1051 self.assertEqual(contig.reads[8].ds.phd_file, "BL060-c1-LR7.g.ab1.phd.1") 1052 self.assertEqual(contig.reads[8].ds.time, "Tue Feb 3 11:01:16 2004") 1053 self.assertEqual(contig.reads[8].ds.chem, "term") 1054 self.assertEqual(contig.reads[8].ds.dye, "big") 1055 self.assertEqual(contig.reads[8].ds.template, "") 1056 self.assertEqual(contig.reads[8].ds.direction, "") 1057 self.assertIsNone(contig.reads[8].rt) 1058 self.assertIsNone(contig.reads[8].wr) 1059 1060 # Read 9 1061 self.assertEqual(contig.reads[9].rd.name, "BL060-LR7.g.ab1") 1062 self.assertEqual(contig.reads[9].rd.padded_bases, 880) 1063 self.assertEqual(contig.reads[9].rd.info_items, 0) 1064 self.assertEqual(contig.reads[9].rd.read_tags, 0) 1065 center = len(contig.reads[9].rd.sequence) // 2 1066 self.assertEqual(contig.reads[9].rd.sequence[:10], "ggctaCGCCc") 1067 self.assertEqual( 1068 contig.reads[9].rd.sequence[center - 5 : center + 5], "ATTGAGTTTC" 1069 ) 1070 self.assertEqual(contig.reads[9].rd.sequence[-10:], "tggcgttgcg") 1071 self.assertEqual(contig.reads[9].qa.qual_clipping_start, 14) 1072 self.assertEqual(contig.reads[9].qa.qual_clipping_end, 765) 1073 self.assertEqual(contig.reads[9].qa.align_clipping_start, 4) 1074 self.assertEqual(contig.reads[9].qa.align_clipping_end, 765) 1075 self.assertEqual(contig.reads[9].ds.chromat_file, "BL060-LR7.g.ab1") 1076 self.assertEqual(contig.reads[9].ds.phd_file, "BL060-LR7.g.ab1.phd.1") 1077 self.assertEqual(contig.reads[9].ds.time, "Fri Nov 14 09:46:03 2003") 1078 self.assertEqual(contig.reads[9].ds.chem, "term") 1079 self.assertEqual(contig.reads[9].ds.dye, "big") 1080 self.assertEqual(contig.reads[9].ds.template, "") 1081 self.assertEqual(contig.reads[9].ds.direction, "") 1082 self.assertIsNone(contig.reads[9].rt) 1083 self.assertIsNone(contig.reads[9].wr) 1084 1085 # Read 10 1086 self.assertEqual(contig.reads[10].rd.name, "BL060c5-LR5.g.ab1") 1087 self.assertEqual(contig.reads[10].rd.padded_bases, 871) 1088 self.assertEqual(contig.reads[10].rd.info_items, 0) 1089 self.assertEqual(contig.reads[10].rd.read_tags, 0) 1090 center = len(contig.reads[10].rd.sequence) // 2 1091 self.assertEqual(contig.reads[10].rd.sequence[:10], "ggtTCGATTA") 1092 self.assertEqual( 1093 contig.reads[10].rd.sequence[center - 5 : center + 5], "ACCAATTGAC" 1094 ) 1095 self.assertEqual(contig.reads[10].rd.sequence[-10:], "ACCACCCatt") 1096 self.assertEqual(contig.reads[10].qa.qual_clipping_start, 12) 1097 self.assertEqual(contig.reads[10].qa.qual_clipping_end, 767) 1098 self.assertEqual(contig.reads[10].qa.align_clipping_start, 1) 1099 self.assertEqual(contig.reads[10].qa.align_clipping_end, 871) 1100 self.assertEqual(contig.reads[10].ds.chromat_file, "BL060c5-LR5.g.ab1") 1101 self.assertEqual(contig.reads[10].ds.phd_file, "BL060c5-LR5.g.ab1.phd.1") 1102 self.assertEqual(contig.reads[10].ds.time, "Fri Nov 14 09:46:03 2003") 1103 self.assertEqual(contig.reads[10].ds.chem, "term") 1104 self.assertEqual(contig.reads[10].ds.dye, "big") 1105 self.assertEqual(contig.reads[10].ds.template, "") 1106 self.assertEqual(contig.reads[10].ds.direction, "") 1107 self.assertIsNone(contig.reads[10].rt) 1108 self.assertIsNone(contig.reads[10].wr) 1109 1110 # Read 11 1111 self.assertEqual(contig.reads[11].rd.name, "BL060c2-LR5.g.ab1") 1112 self.assertEqual(contig.reads[11].rd.padded_bases, 839) 1113 self.assertEqual(contig.reads[11].rd.info_items, 0) 1114 self.assertEqual(contig.reads[11].rd.read_tags, 0) 1115 center = len(contig.reads[11].rd.sequence) // 2 1116 self.assertEqual(contig.reads[11].rd.sequence[:10], "ggttcatatg") 1117 self.assertEqual( 1118 contig.reads[11].rd.sequence[center - 5 : center + 5], "TAAAATCAGT" 1119 ) 1120 self.assertEqual(contig.reads[11].rd.sequence[-10:], "TCTTGCaata") 1121 self.assertEqual(contig.reads[11].qa.qual_clipping_start, 11) 1122 self.assertEqual(contig.reads[11].qa.qual_clipping_end, 757) 1123 self.assertEqual(contig.reads[11].qa.align_clipping_start, 10) 1124 self.assertEqual(contig.reads[11].qa.align_clipping_end, 835) 1125 self.assertIsNone(contig.reads[11].ds) 1126 self.assertEqual(len(contig.reads[11].rt), 1) 1127 self.assertEqual(contig.reads[11].rt[0].name, "BL060c2-LR5.g.ab1") 1128 self.assertEqual(contig.reads[11].rt[0].tag_type, "matchElsewhereHighQual") 1129 self.assertEqual(contig.reads[11].rt[0].program, "phrap") 1130 self.assertEqual(contig.reads[11].rt[0].padded_start, 617) 1131 self.assertEqual(contig.reads[11].rt[0].padded_end, 631) 1132 self.assertEqual(contig.reads[11].rt[0].date, "040217:110357") 1133 self.assertIsNone(contig.reads[11].wr) 1134 1135 # Read 12 1136 self.assertEqual(contig.reads[12].rd.name, "BL060c5-LR0R.b.ab1") 1137 self.assertEqual(contig.reads[12].rd.padded_bases, 855) 1138 self.assertEqual(contig.reads[12].rd.info_items, 0) 1139 self.assertEqual(contig.reads[12].rd.read_tags, 0) 1140 center = len(contig.reads[12].rd.sequence) // 2 1141 self.assertEqual(contig.reads[12].rd.sequence[:10], "cACTCGCGTA") 1142 self.assertEqual( 1143 contig.reads[12].rd.sequence[center - 5 : center + 5], "CTCGTAAAAT" 1144 ) 1145 self.assertEqual(contig.reads[12].rd.sequence[-10:], "aacccctgca") 1146 self.assertEqual(contig.reads[12].qa.qual_clipping_start, 94) 1147 self.assertEqual(contig.reads[12].qa.qual_clipping_end, 835) 1148 self.assertEqual(contig.reads[12].qa.align_clipping_start, 1) 1149 self.assertEqual(contig.reads[12].qa.align_clipping_end, 847) 1150 self.assertEqual(contig.reads[12].ds.chromat_file, "BL060c5-LR0R.b.ab1") 1151 self.assertEqual(contig.reads[12].ds.phd_file, "BL060c5-LR0R.b.ab1.phd.1") 1152 self.assertEqual(contig.reads[12].ds.time, "Wed Nov 12 08:16:30 2003") 1153 self.assertEqual(contig.reads[12].ds.chem, "term") 1154 self.assertEqual(contig.reads[12].ds.dye, "big") 1155 self.assertEqual(contig.reads[12].ds.template, "") 1156 self.assertEqual(contig.reads[12].ds.direction, "") 1157 self.assertIsNone(contig.reads[12].rt) 1158 self.assertIsNone(contig.reads[12].wr) 1159 1160 # Read 13 1161 self.assertEqual(contig.reads[13].rd.name, "BL060c2-LR0R.b.ab1") 1162 self.assertEqual(contig.reads[13].rd.padded_bases, 852) 1163 self.assertEqual(contig.reads[13].rd.info_items, 0) 1164 self.assertEqual(contig.reads[13].rd.read_tags, 0) 1165 center = len(contig.reads[13].rd.sequence) // 2 1166 self.assertEqual(contig.reads[13].rd.sequence[:10], "cgCGTa*tTG") 1167 self.assertEqual( 1168 contig.reads[13].rd.sequence[center - 5 : center + 5], "GTAAAATATT" 1169 ) 1170 self.assertEqual(contig.reads[13].rd.sequence[-10:], "Atccttgtag") 1171 self.assertEqual(contig.reads[13].qa.qual_clipping_start, 33) 1172 self.assertEqual(contig.reads[13].qa.qual_clipping_end, 831) 1173 self.assertEqual(contig.reads[13].qa.align_clipping_start, 1) 1174 self.assertEqual(contig.reads[13].qa.align_clipping_end, 852) 1175 self.assertEqual(contig.reads[13].ds.chromat_file, "BL060c2-LR0R.b.ab1") 1176 self.assertEqual(contig.reads[13].ds.phd_file, "BL060c2-LR0R.b.ab1.phd.1") 1177 self.assertEqual(contig.reads[13].ds.time, "Wed Nov 12 08:16:29 2003") 1178 self.assertEqual(contig.reads[13].ds.chem, "term") 1179 self.assertEqual(contig.reads[13].ds.dye, "big") 1180 self.assertEqual(contig.reads[13].ds.template, "") 1181 self.assertEqual(contig.reads[13].ds.direction, "") 1182 self.assertEqual(len(contig.reads[13].rt), 1) 1183 self.assertEqual(contig.reads[13].rt[0].name, "BL060c5-LR0R.b.ab1") 1184 self.assertEqual(contig.reads[13].rt[0].tag_type, "matchElsewhereHighQual") 1185 self.assertEqual(contig.reads[13].rt[0].program, "phrap") 1186 self.assertEqual(contig.reads[13].rt[0].padded_start, 617) 1187 self.assertEqual(contig.reads[13].rt[0].padded_end, 631) 1188 self.assertEqual(contig.reads[13].rt[0].date, "040217:110357") 1189 self.assertEqual(len(contig.reads[13].wr), 1) 1190 self.assertEqual(contig.reads[13].wr[0].name, "BL060c2-LR0R.b.ab1") 1191 self.assertEqual(contig.reads[13].wr[0].aligned, "unaligned") 1192 self.assertEqual(contig.reads[13].wr[0].program, "phrap") 1193 self.assertEqual(contig.reads[13].wr[0].date, "040217:110357") 1194 1195 # Make sure there are no more contigs 1196 self.assertRaises(StopIteration, next, contigs) 1197 1198 1199class AceTestTwo(unittest.TestCase): 1200 """Test parsing example output from CAP3. 1201 1202 The sample input file seq.cap.ace was downloaded from: 1203 http://genome.cs.mtu.edu/cap/data/seq.cap.ace 1204 """ 1205 1206 def setUp(self): 1207 self.handle = open("Ace/seq.cap.ace") 1208 1209 def tearDown(self): 1210 self.handle.close() 1211 1212 def test_check_ACEParser(self): 1213 """Test to check that ACEParser can parse the whole file into one record.""" 1214 record = Ace.read(self.handle) 1215 self.assertEqual(record.ncontigs, 1) 1216 self.assertEqual(record.nreads, 6) 1217 self.assertIsNone(record.wa) 1218 self.assertEqual(len(record.contigs), 1) 1219 1220 self.assertEqual(len(record.contigs[0].reads), 6) 1221 self.assertEqual(record.contigs[0].name, "Contig1") 1222 self.assertEqual(record.contigs[0].nbases, 1222) 1223 self.assertEqual(record.contigs[0].nreads, 6) 1224 self.assertEqual(record.contigs[0].nsegments, 0) 1225 self.assertEqual(record.contigs[0].uorc, "U") 1226 center = len(record.contigs[0].sequence) // 2 1227 self.assertEqual(record.contigs[0].sequence[:10], "AGTTTTAGTT") 1228 self.assertEqual( 1229 record.contigs[0].sequence[center - 5 : center + 5], "TGTGCGCGCA" 1230 ) 1231 self.assertEqual(record.contigs[0].sequence[-10:], "ATATCACATT") 1232 center = len(record.contigs[0].quality) // 2 1233 self.assertEqual( 1234 record.contigs[0].quality[:10], [61, 66, 67, 70, 71, 73, 73, 77, 77, 87] 1235 ) 1236 self.assertEqual( 1237 record.contigs[0].quality[center - 5 : center + 5], 1238 [97, 97, 97, 97, 97, 97, 97, 97, 97, 97], 1239 ) 1240 self.assertEqual( 1241 record.contigs[0].quality[-10:], [56, 51, 49, 41, 38, 39, 45, 44, 49, 46] 1242 ) 1243 self.assertEqual(len(record.contigs[0].af), 6) 1244 self.assertEqual(len(record.contigs[0].bs), 0) 1245 self.assertEqual(record.contigs[0].af[3].name, "R5") 1246 self.assertEqual(record.contigs[0].af[3].coru, "C") 1247 self.assertEqual(record.contigs[0].af[3].padded_start, 320) 1248 self.assertEqual(record.contigs[0].af[5].name, "R6") 1249 self.assertEqual(record.contigs[0].af[5].coru, "C") 1250 self.assertEqual(record.contigs[0].af[5].padded_start, 517) 1251 self.assertEqual(record.contigs[0].bs, []) 1252 self.assertIsNone(record.contigs[0].ct) 1253 self.assertIsNone(record.contigs[0].wa) 1254 self.assertEqual(len(record.contigs[0].reads), 6) 1255 1256 self.assertEqual(record.contigs[0].reads[0].rd.name, "R3") 1257 self.assertEqual(record.contigs[0].reads[0].rd.padded_bases, 919) 1258 self.assertEqual(record.contigs[0].reads[0].rd.info_items, 0) 1259 self.assertEqual(record.contigs[0].reads[0].rd.read_tags, 0) 1260 center = len(record.contigs[0].reads[0].rd.sequence) // 2 1261 self.assertEqual(record.contigs[0].reads[0].rd.sequence[:10], "NNNNNNNNNN") 1262 self.assertEqual( 1263 record.contigs[0].reads[0].rd.sequence[center - 5 : center + 5], 1264 "ATGTGCGCTC", 1265 ) 1266 self.assertEqual(record.contigs[0].reads[0].rd.sequence[-10:], "CAGCTCACCA") 1267 self.assertEqual(record.contigs[0].reads[0].qa.qual_clipping_start, 55) 1268 self.assertEqual(record.contigs[0].reads[0].qa.qual_clipping_end, 916) 1269 self.assertEqual(record.contigs[0].reads[0].qa.align_clipping_start, 55) 1270 self.assertEqual(record.contigs[0].reads[0].qa.align_clipping_end, 916) 1271 self.assertEqual(record.contigs[0].reads[0].ds.chromat_file, "") 1272 self.assertEqual(record.contigs[0].reads[0].ds.phd_file, "") 1273 self.assertEqual(record.contigs[0].reads[0].ds.time, "") 1274 self.assertEqual(record.contigs[0].reads[0].ds.chem, "") 1275 self.assertEqual(record.contigs[0].reads[0].ds.dye, "") 1276 self.assertEqual(record.contigs[0].reads[0].ds.template, "") 1277 self.assertEqual(record.contigs[0].reads[0].ds.direction, "") 1278 self.assertIsNone(record.contigs[0].reads[0].rt) 1279 self.assertIsNone(record.contigs[0].reads[0].wr) 1280 1281 self.assertEqual(record.contigs[0].reads[1].rd.name, "R1") 1282 self.assertEqual(record.contigs[0].reads[1].rd.padded_bases, 864) 1283 self.assertEqual(record.contigs[0].reads[1].rd.info_items, 0) 1284 self.assertEqual(record.contigs[0].reads[1].rd.read_tags, 0) 1285 center = len(record.contigs[0].reads[1].rd.sequence) // 2 1286 self.assertEqual(record.contigs[0].reads[1].rd.sequence[:10], "AGCCGGTACC") 1287 self.assertEqual( 1288 record.contigs[0].reads[1].rd.sequence[center - 5 : center + 5], 1289 "GGGATGGCAC", 1290 ) 1291 self.assertEqual(record.contigs[0].reads[1].rd.sequence[-10:], "GGGCTGGGAG") 1292 self.assertEqual(record.contigs[0].reads[1].qa.qual_clipping_start, 12) 1293 self.assertEqual(record.contigs[0].reads[1].qa.qual_clipping_end, 863) 1294 self.assertEqual(record.contigs[0].reads[1].qa.align_clipping_start, 12) 1295 self.assertEqual(record.contigs[0].reads[1].qa.align_clipping_end, 863) 1296 self.assertEqual(record.contigs[0].reads[1].ds.chromat_file, "") 1297 self.assertEqual(record.contigs[0].reads[1].ds.phd_file, "") 1298 self.assertEqual(record.contigs[0].reads[1].ds.time, "") 1299 self.assertEqual(record.contigs[0].reads[1].ds.chem, "") 1300 self.assertEqual(record.contigs[0].reads[1].ds.dye, "") 1301 self.assertEqual(record.contigs[0].reads[1].ds.template, "") 1302 self.assertEqual(record.contigs[0].reads[1].ds.direction, "") 1303 self.assertIsNone(record.contigs[0].reads[1].rt) 1304 self.assertIsNone(record.contigs[0].reads[1].wr) 1305 1306 self.assertEqual(record.contigs[0].reads[2].rd.name, "R2") 1307 self.assertEqual(record.contigs[0].reads[2].rd.padded_bases, 1026) 1308 self.assertEqual(record.contigs[0].reads[2].rd.info_items, 0) 1309 self.assertEqual(record.contigs[0].reads[2].rd.read_tags, 0) 1310 center = len(record.contigs[0].reads[2].rd.sequence) // 2 1311 self.assertEqual(record.contigs[0].reads[2].rd.sequence[:10], "NNNNNNNNNN") 1312 self.assertEqual( 1313 record.contigs[0].reads[2].rd.sequence[center - 5 : center + 5], 1314 "GGATGCCTGG", 1315 ) 1316 self.assertEqual(record.contigs[0].reads[2].rd.sequence[-10:], "GGTTGAGGCC") 1317 self.assertEqual(record.contigs[0].reads[2].qa.qual_clipping_start, 55) 1318 self.assertEqual(record.contigs[0].reads[2].qa.qual_clipping_end, 1000) 1319 self.assertEqual(record.contigs[0].reads[2].qa.align_clipping_start, 55) 1320 self.assertEqual(record.contigs[0].reads[2].qa.align_clipping_end, 1000) 1321 self.assertEqual(record.contigs[0].reads[2].ds.chromat_file, "") 1322 self.assertEqual(record.contigs[0].reads[2].ds.phd_file, "") 1323 self.assertEqual(record.contigs[0].reads[2].ds.time, "") 1324 self.assertEqual(record.contigs[0].reads[2].ds.chem, "") 1325 self.assertEqual(record.contigs[0].reads[2].ds.dye, "") 1326 self.assertEqual(record.contigs[0].reads[2].ds.template, "") 1327 self.assertEqual(record.contigs[0].reads[2].ds.direction, "") 1328 self.assertIsNone(record.contigs[0].reads[2].rt) 1329 self.assertIsNone(record.contigs[0].reads[2].wr) 1330 1331 self.assertEqual(record.contigs[0].reads[3].rd.name, "R5") 1332 self.assertEqual(record.contigs[0].reads[3].rd.padded_bases, 925) 1333 self.assertEqual(record.contigs[0].reads[3].rd.info_items, 0) 1334 self.assertEqual(record.contigs[0].reads[3].rd.read_tags, 0) 1335 center = len(record.contigs[0].reads[3].rd.sequence) // 2 1336 self.assertEqual(record.contigs[0].reads[3].rd.sequence[:10], "NNNNNNNNNN") 1337 self.assertEqual( 1338 record.contigs[0].reads[3].rd.sequence[center - 5 : center + 5], 1339 "CCTCCCTACA", 1340 ) 1341 self.assertEqual(record.contigs[0].reads[3].rd.sequence[-10:], "GCCCCCGGNN") 1342 self.assertEqual(record.contigs[0].reads[3].qa.qual_clipping_start, 293) 1343 self.assertEqual(record.contigs[0].reads[3].qa.qual_clipping_end, 874) 1344 self.assertEqual(record.contigs[0].reads[3].qa.align_clipping_start, 293) 1345 self.assertEqual(record.contigs[0].reads[3].qa.align_clipping_end, 874) 1346 self.assertEqual(record.contigs[0].reads[3].ds.chromat_file, "") 1347 self.assertEqual(record.contigs[0].reads[3].ds.phd_file, "") 1348 self.assertEqual(record.contigs[0].reads[3].ds.time, "") 1349 self.assertEqual(record.contigs[0].reads[3].ds.chem, "") 1350 self.assertEqual(record.contigs[0].reads[3].ds.dye, "") 1351 self.assertEqual(record.contigs[0].reads[3].ds.template, "") 1352 self.assertEqual(record.contigs[0].reads[3].ds.direction, "") 1353 self.assertIsNone(record.contigs[0].reads[3].rt) 1354 self.assertIsNone(record.contigs[0].reads[3].wr) 1355 1356 self.assertEqual(record.contigs[0].reads[4].rd.name, "R4") 1357 self.assertEqual(record.contigs[0].reads[4].rd.padded_bases, 816) 1358 self.assertEqual(record.contigs[0].reads[4].rd.info_items, 0) 1359 self.assertEqual(record.contigs[0].reads[4].rd.read_tags, 0) 1360 center = len(record.contigs[0].reads[4].rd.sequence) // 2 1361 self.assertEqual(record.contigs[0].reads[4].rd.sequence[:10], "CACTCAGCTC") 1362 self.assertEqual( 1363 record.contigs[0].reads[4].rd.sequence[center - 5 : center + 5], 1364 "TCCAAAGGGT", 1365 ) 1366 self.assertEqual(record.contigs[0].reads[4].rd.sequence[-10:], "AGCTGAATCG") 1367 self.assertEqual(record.contigs[0].reads[4].qa.qual_clipping_start, 1) 1368 self.assertEqual(record.contigs[0].reads[4].qa.qual_clipping_end, 799) 1369 self.assertEqual(record.contigs[0].reads[4].qa.align_clipping_start, 1) 1370 self.assertEqual(record.contigs[0].reads[4].qa.align_clipping_end, 799) 1371 self.assertEqual(record.contigs[0].reads[4].ds.chromat_file, "") 1372 self.assertEqual(record.contigs[0].reads[4].ds.phd_file, "") 1373 self.assertEqual(record.contigs[0].reads[4].ds.time, "") 1374 self.assertEqual(record.contigs[0].reads[4].ds.chem, "") 1375 self.assertEqual(record.contigs[0].reads[4].ds.dye, "") 1376 self.assertEqual(record.contigs[0].reads[4].ds.template, "") 1377 self.assertEqual(record.contigs[0].reads[4].ds.direction, "") 1378 self.assertIsNone(record.contigs[0].reads[4].rt) 1379 self.assertIsNone(record.contigs[0].reads[4].wr) 1380 1381 self.assertEqual(record.contigs[0].reads[5].rd.name, "R6") 1382 self.assertEqual(record.contigs[0].reads[5].rd.padded_bases, 857) 1383 self.assertEqual(record.contigs[0].reads[5].rd.info_items, 0) 1384 self.assertEqual(record.contigs[0].reads[5].rd.read_tags, 0) 1385 center = len(record.contigs[0].reads[5].rd.sequence) // 2 1386 self.assertEqual(record.contigs[0].reads[5].rd.sequence[:10], "CCGGCAGTGA") 1387 self.assertEqual( 1388 record.contigs[0].reads[5].rd.sequence[center - 5 : center + 5], 1389 "AAAAAAAACC", 1390 ) 1391 self.assertEqual(record.contigs[0].reads[5].rd.sequence[-10:], "NNNNNNNNNN") 1392 self.assertEqual(record.contigs[0].reads[5].qa.qual_clipping_start, 24) 1393 self.assertEqual(record.contigs[0].reads[5].qa.qual_clipping_end, 706) 1394 self.assertEqual(record.contigs[0].reads[5].qa.align_clipping_start, 24) 1395 self.assertEqual(record.contigs[0].reads[5].qa.align_clipping_end, 706) 1396 self.assertEqual(record.contigs[0].reads[5].ds.chromat_file, "") 1397 self.assertEqual(record.contigs[0].reads[5].ds.phd_file, "") 1398 self.assertEqual(record.contigs[0].reads[5].ds.time, "") 1399 self.assertEqual(record.contigs[0].reads[5].ds.chem, "") 1400 self.assertEqual(record.contigs[0].reads[5].ds.dye, "") 1401 self.assertEqual(record.contigs[0].reads[5].ds.template, "") 1402 self.assertEqual(record.contigs[0].reads[5].ds.direction, "") 1403 self.assertIsNone(record.contigs[0].reads[5].rt) 1404 self.assertIsNone(record.contigs[0].reads[5].wr) 1405 1406 def test_check_record_parser(self): 1407 """Test to check that record parser parses each contig into a record.""" 1408 contigs = Ace.parse(self.handle) 1409 1410 # First (and only) contig 1411 contig = next(contigs) 1412 1413 self.assertEqual(len(contig.reads), 6) 1414 self.assertEqual(contig.name, "Contig1") 1415 self.assertEqual(contig.nbases, 1222) 1416 self.assertEqual(contig.nreads, 6) 1417 self.assertEqual(contig.nsegments, 0) 1418 self.assertEqual(contig.uorc, "U") 1419 center = len(contig.sequence) // 2 1420 self.assertEqual(contig.sequence[:10], "AGTTTTAGTT") 1421 self.assertEqual(contig.sequence[center - 5 : center + 5], "TGTGCGCGCA") 1422 self.assertEqual(contig.sequence[-10:], "ATATCACATT") 1423 center = len(contig.quality) // 2 1424 self.assertEqual(contig.quality[:10], [61, 66, 67, 70, 71, 73, 73, 77, 77, 87]) 1425 self.assertEqual( 1426 contig.quality[center - 5 : center + 5], 1427 [97, 97, 97, 97, 97, 97, 97, 97, 97, 97], 1428 ) 1429 self.assertEqual(contig.quality[-10:], [56, 51, 49, 41, 38, 39, 45, 44, 49, 46]) 1430 self.assertEqual(len(contig.af), 6) 1431 self.assertEqual(len(contig.bs), 0) 1432 self.assertEqual(contig.af[3].name, "R5") 1433 self.assertEqual(contig.af[3].coru, "C") 1434 self.assertEqual(contig.af[3].padded_start, 320) 1435 self.assertEqual(contig.af[5].name, "R6") 1436 self.assertEqual(contig.af[5].coru, "C") 1437 self.assertEqual(contig.af[5].padded_start, 517) 1438 self.assertEqual(contig.bs, []) 1439 self.assertIsNone(contig.ct) 1440 self.assertIsNone(contig.wa) 1441 self.assertEqual(len(contig.reads), 6) 1442 1443 self.assertEqual(contig.reads[0].rd.name, "R3") 1444 self.assertEqual(contig.reads[0].rd.padded_bases, 919) 1445 self.assertEqual(contig.reads[0].rd.info_items, 0) 1446 self.assertEqual(contig.reads[0].rd.read_tags, 0) 1447 center = len(contig.reads[0].rd.sequence) // 2 1448 self.assertEqual(contig.reads[0].rd.sequence[:10], "NNNNNNNNNN") 1449 self.assertEqual( 1450 contig.reads[0].rd.sequence[center - 5 : center + 5], "ATGTGCGCTC" 1451 ) 1452 self.assertEqual(contig.reads[0].rd.sequence[-10:], "CAGCTCACCA") 1453 self.assertEqual(contig.reads[0].qa.qual_clipping_start, 55) 1454 self.assertEqual(contig.reads[0].qa.qual_clipping_end, 916) 1455 self.assertEqual(contig.reads[0].qa.align_clipping_start, 55) 1456 self.assertEqual(contig.reads[0].qa.align_clipping_end, 916) 1457 self.assertEqual(contig.reads[0].ds.chromat_file, "") 1458 self.assertEqual(contig.reads[0].ds.phd_file, "") 1459 self.assertEqual(contig.reads[0].ds.time, "") 1460 self.assertEqual(contig.reads[0].ds.chem, "") 1461 self.assertEqual(contig.reads[0].ds.dye, "") 1462 self.assertEqual(contig.reads[0].ds.template, "") 1463 self.assertEqual(contig.reads[0].ds.direction, "") 1464 self.assertIsNone(contig.reads[0].rt) 1465 self.assertIsNone(contig.reads[0].wr) 1466 1467 self.assertEqual(contig.reads[1].rd.name, "R1") 1468 self.assertEqual(contig.reads[1].rd.padded_bases, 864) 1469 self.assertEqual(contig.reads[1].rd.info_items, 0) 1470 self.assertEqual(contig.reads[1].rd.read_tags, 0) 1471 center = len(contig.reads[1].rd.sequence) // 2 1472 self.assertEqual(contig.reads[1].rd.sequence[:10], "AGCCGGTACC") 1473 self.assertEqual( 1474 contig.reads[1].rd.sequence[center - 5 : center + 5], "GGGATGGCAC" 1475 ) 1476 self.assertEqual(contig.reads[1].rd.sequence[-10:], "GGGCTGGGAG") 1477 self.assertEqual(contig.reads[1].qa.qual_clipping_start, 12) 1478 self.assertEqual(contig.reads[1].qa.qual_clipping_end, 863) 1479 self.assertEqual(contig.reads[1].qa.align_clipping_start, 12) 1480 self.assertEqual(contig.reads[1].qa.align_clipping_end, 863) 1481 self.assertEqual(contig.reads[1].ds.chromat_file, "") 1482 self.assertEqual(contig.reads[1].ds.phd_file, "") 1483 self.assertEqual(contig.reads[1].ds.time, "") 1484 self.assertEqual(contig.reads[1].ds.chem, "") 1485 self.assertEqual(contig.reads[1].ds.dye, "") 1486 self.assertEqual(contig.reads[1].ds.template, "") 1487 self.assertEqual(contig.reads[1].ds.direction, "") 1488 self.assertIsNone(contig.reads[1].rt) 1489 self.assertIsNone(contig.reads[1].wr) 1490 1491 self.assertEqual(contig.reads[2].rd.name, "R2") 1492 self.assertEqual(contig.reads[2].rd.padded_bases, 1026) 1493 self.assertEqual(contig.reads[2].rd.info_items, 0) 1494 self.assertEqual(contig.reads[2].rd.read_tags, 0) 1495 center = len(contig.reads[2].rd.sequence) // 2 1496 self.assertEqual(contig.reads[2].rd.sequence[:10], "NNNNNNNNNN") 1497 self.assertEqual( 1498 contig.reads[2].rd.sequence[center - 5 : center + 5], "GGATGCCTGG" 1499 ) 1500 self.assertEqual(contig.reads[2].rd.sequence[-10:], "GGTTGAGGCC") 1501 self.assertEqual(contig.reads[2].qa.qual_clipping_start, 55) 1502 self.assertEqual(contig.reads[2].qa.qual_clipping_end, 1000) 1503 self.assertEqual(contig.reads[2].qa.align_clipping_start, 55) 1504 self.assertEqual(contig.reads[2].qa.align_clipping_end, 1000) 1505 self.assertEqual(contig.reads[2].ds.chromat_file, "") 1506 self.assertEqual(contig.reads[2].ds.phd_file, "") 1507 self.assertEqual(contig.reads[2].ds.time, "") 1508 self.assertEqual(contig.reads[2].ds.chem, "") 1509 self.assertEqual(contig.reads[2].ds.dye, "") 1510 self.assertEqual(contig.reads[2].ds.template, "") 1511 self.assertEqual(contig.reads[2].ds.direction, "") 1512 self.assertIsNone(contig.reads[2].rt) 1513 self.assertIsNone(contig.reads[2].wr) 1514 1515 self.assertEqual(contig.reads[3].rd.name, "R5") 1516 self.assertEqual(contig.reads[3].rd.padded_bases, 925) 1517 self.assertEqual(contig.reads[3].rd.info_items, 0) 1518 self.assertEqual(contig.reads[3].rd.read_tags, 0) 1519 center = len(contig.reads[3].rd.sequence) // 2 1520 self.assertEqual(contig.reads[3].rd.sequence[:10], "NNNNNNNNNN") 1521 self.assertEqual( 1522 contig.reads[3].rd.sequence[center - 5 : center + 5], "CCTCCCTACA" 1523 ) 1524 self.assertEqual(contig.reads[3].rd.sequence[-10:], "GCCCCCGGNN") 1525 self.assertEqual(contig.reads[3].qa.qual_clipping_start, 293) 1526 self.assertEqual(contig.reads[3].qa.qual_clipping_end, 874) 1527 self.assertEqual(contig.reads[3].qa.align_clipping_start, 293) 1528 self.assertEqual(contig.reads[3].qa.align_clipping_end, 874) 1529 self.assertEqual(contig.reads[3].ds.chromat_file, "") 1530 self.assertEqual(contig.reads[3].ds.phd_file, "") 1531 self.assertEqual(contig.reads[3].ds.time, "") 1532 self.assertEqual(contig.reads[3].ds.chem, "") 1533 self.assertEqual(contig.reads[3].ds.dye, "") 1534 self.assertEqual(contig.reads[3].ds.template, "") 1535 self.assertEqual(contig.reads[3].ds.direction, "") 1536 self.assertIsNone(contig.reads[3].rt) 1537 self.assertIsNone(contig.reads[3].wr) 1538 1539 self.assertEqual(contig.reads[4].rd.name, "R4") 1540 self.assertEqual(contig.reads[4].rd.padded_bases, 816) 1541 self.assertEqual(contig.reads[4].rd.info_items, 0) 1542 self.assertEqual(contig.reads[4].rd.read_tags, 0) 1543 center = len(contig.reads[4].rd.sequence) // 2 1544 self.assertEqual(contig.reads[4].rd.sequence[:10], "CACTCAGCTC") 1545 self.assertEqual( 1546 contig.reads[4].rd.sequence[center - 5 : center + 5], "TCCAAAGGGT" 1547 ) 1548 self.assertEqual(contig.reads[4].rd.sequence[-10:], "AGCTGAATCG") 1549 self.assertEqual(contig.reads[4].qa.qual_clipping_start, 1) 1550 self.assertEqual(contig.reads[4].qa.qual_clipping_end, 799) 1551 self.assertEqual(contig.reads[4].qa.align_clipping_start, 1) 1552 self.assertEqual(contig.reads[4].qa.align_clipping_end, 799) 1553 self.assertEqual(contig.reads[4].ds.chromat_file, "") 1554 self.assertEqual(contig.reads[4].ds.phd_file, "") 1555 self.assertEqual(contig.reads[4].ds.time, "") 1556 self.assertEqual(contig.reads[4].ds.chem, "") 1557 self.assertEqual(contig.reads[4].ds.dye, "") 1558 self.assertEqual(contig.reads[4].ds.template, "") 1559 self.assertEqual(contig.reads[4].ds.direction, "") 1560 self.assertIsNone(contig.reads[4].rt) 1561 self.assertIsNone(contig.reads[4].wr) 1562 1563 self.assertEqual(contig.reads[5].rd.name, "R6") 1564 self.assertEqual(contig.reads[5].rd.padded_bases, 857) 1565 self.assertEqual(contig.reads[5].rd.info_items, 0) 1566 self.assertEqual(contig.reads[5].rd.read_tags, 0) 1567 center = len(contig.reads[5].rd.sequence) // 2 1568 self.assertEqual(contig.reads[5].rd.sequence[:10], "CCGGCAGTGA") 1569 self.assertEqual( 1570 contig.reads[5].rd.sequence[center - 5 : center + 5], "AAAAAAAACC" 1571 ) 1572 self.assertEqual(contig.reads[5].rd.sequence[-10:], "NNNNNNNNNN") 1573 self.assertEqual(contig.reads[5].qa.qual_clipping_start, 24) 1574 self.assertEqual(contig.reads[5].qa.qual_clipping_end, 706) 1575 self.assertEqual(contig.reads[5].qa.align_clipping_start, 24) 1576 self.assertEqual(contig.reads[5].qa.align_clipping_end, 706) 1577 self.assertEqual(contig.reads[5].ds.chromat_file, "") 1578 self.assertEqual(contig.reads[5].ds.phd_file, "") 1579 self.assertEqual(contig.reads[5].ds.time, "") 1580 self.assertEqual(contig.reads[5].ds.chem, "") 1581 self.assertEqual(contig.reads[5].ds.dye, "") 1582 self.assertEqual(contig.reads[5].ds.template, "") 1583 self.assertEqual(contig.reads[5].ds.direction, "") 1584 self.assertIsNone(contig.reads[5].rt) 1585 self.assertIsNone(contig.reads[5].wr) 1586 1587 # Make sure there are no more contigs 1588 self.assertRaises(StopIteration, next, contigs) 1589 1590 1591class AceTestThree(unittest.TestCase): 1592 """Test parsing example ACE input file for CONSED. 1593 1594 The sample input file was downloaded from: 1595 http://bozeman.mbt.washington.edu/consed/distributions/README.16.0.txt 1596 """ 1597 1598 def setUp(self): 1599 self.handle = open("Ace/consed_sample.ace") 1600 1601 def tearDown(self): 1602 self.handle.close() 1603 1604 def test_check_ACEParser(self): 1605 """Test to check that ACEParser can parse the whole file into one record.""" 1606 record = Ace.read(self.handle) 1607 self.assertEqual(record.ncontigs, 1) 1608 self.assertEqual(record.nreads, 8) 1609 self.assertEqual(len(record.wa), 1) 1610 self.assertEqual(record.wa[0].tag_type, "phrap_params") 1611 self.assertEqual(record.wa[0].program, "phrap") 1612 self.assertEqual(record.wa[0].date, "990621:161947") 1613 self.assertEqual( 1614 record.wa[0].info, 1615 [ 1616 "/usr/local/genome/bin/phrap standard.fasta.screen -new_ace -view", 1617 "phrap version 0.990319", 1618 ], 1619 ) 1620 self.assertEqual(len(record.contigs), 1) 1621 1622 self.assertEqual(len(record.contigs[0].reads), 8) 1623 self.assertEqual(record.contigs[0].name, "Contig1") 1624 self.assertEqual(record.contigs[0].nbases, 1475) 1625 self.assertEqual(record.contigs[0].nreads, 8) 1626 self.assertEqual(record.contigs[0].nsegments, 156) 1627 self.assertEqual(record.contigs[0].uorc, "U") 1628 center = len(record.contigs[0].sequence) // 2 1629 self.assertEqual(record.contigs[0].sequence[:10], "agccccgggc") 1630 self.assertEqual( 1631 record.contigs[0].sequence[center - 5 : center + 5], "CTTCCCCAGG" 1632 ) 1633 self.assertEqual(record.contigs[0].sequence[-10:], "gttgggtttg") 1634 center = len(record.contigs[0].quality) // 2 1635 self.assertEqual(record.contigs[0].quality[:10], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0]) 1636 self.assertEqual( 1637 record.contigs[0].quality[center - 5 : center + 5], 1638 [90, 90, 90, 90, 90, 90, 90, 90, 89, 89], 1639 ) 1640 self.assertEqual( 1641 record.contigs[0].quality[-10:], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0] 1642 ) 1643 self.assertEqual(len(record.contigs[0].af), 8) 1644 self.assertEqual(len(record.contigs[0].bs), 156) 1645 self.assertEqual(record.contigs[0].af[4].name, "K26-291s") 1646 self.assertEqual(record.contigs[0].af[4].coru, "U") 1647 self.assertEqual(record.contigs[0].af[4].padded_start, 828) 1648 self.assertEqual(record.contigs[0].af[7].name, "K26-766c") 1649 self.assertEqual(record.contigs[0].af[7].coru, "C") 1650 self.assertEqual(record.contigs[0].af[7].padded_start, 408) 1651 self.assertEqual(record.contigs[0].bs[78].name, "K26-394c") 1652 self.assertEqual(record.contigs[0].bs[78].padded_start, 987) 1653 self.assertEqual(record.contigs[0].bs[78].padded_end, 987) 1654 self.assertEqual(record.contigs[0].bs[155].name, "K26-822c") 1655 self.assertEqual(record.contigs[0].bs[155].padded_start, 1303) 1656 self.assertEqual(record.contigs[0].bs[155].padded_end, 1475) 1657 self.assertEqual(len(record.contigs[0].ct), 3) 1658 self.assertEqual(record.contigs[0].ct[0].name, "Contig1") 1659 self.assertEqual(record.contigs[0].ct[0].tag_type, "repeat") 1660 self.assertEqual(record.contigs[0].ct[0].program, "consed") 1661 self.assertEqual(record.contigs[0].ct[0].padded_start, 976) 1662 self.assertEqual(record.contigs[0].ct[0].padded_end, 986) 1663 self.assertEqual(record.contigs[0].ct[0].date, "971218:180623") 1664 self.assertEqual(record.contigs[0].ct[0].info, []) 1665 self.assertEqual(record.contigs[0].ct[1].name, "Contig1") 1666 self.assertEqual(record.contigs[0].ct[1].tag_type, "comment") 1667 self.assertEqual(record.contigs[0].ct[1].program, "consed") 1668 self.assertEqual(record.contigs[0].ct[1].padded_start, 996) 1669 self.assertEqual(record.contigs[0].ct[1].padded_end, 1007) 1670 self.assertEqual(record.contigs[0].ct[1].date, "971218:180623") 1671 self.assertEqual( 1672 record.contigs[0].ct[1].info, 1673 ["This is line 1 of a comment", "There may be any number of lines"], 1674 ) 1675 self.assertEqual(record.contigs[0].ct[2].name, "Contig1") 1676 self.assertEqual(record.contigs[0].ct[2].tag_type, "oligo") 1677 self.assertEqual(record.contigs[0].ct[2].program, "consed") 1678 self.assertEqual(record.contigs[0].ct[2].padded_start, 963) 1679 self.assertEqual(record.contigs[0].ct[2].padded_end, 987) 1680 self.assertEqual(record.contigs[0].ct[2].date, "971218:180623") 1681 self.assertEqual( 1682 record.contigs[0].ct[2].info, 1683 ["standard.1 acataagacattctaaatttttact 50 U", "seq from clone"], 1684 ) 1685 self.assertEqual(len(record.contigs[0].wa), 1) 1686 self.assertEqual(record.contigs[0].wa[0].tag_type, "phrap_params") 1687 self.assertEqual(record.contigs[0].wa[0].program, "phrap") 1688 self.assertEqual(record.contigs[0].wa[0].date, "990621:161947") 1689 self.assertEqual( 1690 record.contigs[0].wa[0].info, 1691 [ 1692 "/usr/local/genome/bin/phrap standard.fasta.screen -new_ace -view", 1693 "phrap version 0.990319", 1694 ], 1695 ) 1696 1697 self.assertEqual(len(record.contigs[0].reads), 8) 1698 1699 self.assertEqual(record.contigs[0].reads[0].rd.name, "K26-217c") 1700 self.assertEqual(record.contigs[0].reads[0].rd.padded_bases, 563) 1701 self.assertEqual(record.contigs[0].reads[0].rd.info_items, 0) 1702 self.assertEqual(record.contigs[0].reads[0].rd.read_tags, 0) 1703 center = len(record.contigs[0].reads[0].rd.sequence) // 2 1704 self.assertEqual(record.contigs[0].reads[0].rd.sequence[:10], "tcccCgtgag") 1705 self.assertEqual( 1706 record.contigs[0].reads[0].rd.sequence[center - 5 : center + 5], 1707 "CTCCTGcctg", 1708 ) 1709 self.assertEqual(record.contigs[0].reads[0].rd.sequence[-10:], "ggcccccctc") 1710 self.assertEqual(record.contigs[0].reads[0].qa.qual_clipping_start, 19) 1711 self.assertEqual(record.contigs[0].reads[0].qa.qual_clipping_end, 349) 1712 self.assertEqual(record.contigs[0].reads[0].qa.align_clipping_start, 19) 1713 self.assertEqual(record.contigs[0].reads[0].qa.align_clipping_end, 424) 1714 self.assertEqual(record.contigs[0].reads[0].ds.chromat_file, "K26-217c") 1715 self.assertEqual(record.contigs[0].reads[0].ds.phd_file, "K26-217c.phd.1") 1716 self.assertEqual(record.contigs[0].reads[0].ds.time, "Thu Sep 12 15:42:38 1996") 1717 self.assertEqual(record.contigs[0].reads[0].ds.chem, "") 1718 self.assertEqual(record.contigs[0].reads[0].ds.dye, "") 1719 self.assertEqual(record.contigs[0].reads[0].ds.template, "") 1720 self.assertEqual(record.contigs[0].reads[0].ds.direction, "") 1721 self.assertIsNone(record.contigs[0].reads[0].rt) 1722 self.assertIsNone(record.contigs[0].reads[0].wr) 1723 1724 self.assertEqual(record.contigs[0].reads[1].rd.name, "K26-526t") 1725 self.assertEqual(record.contigs[0].reads[1].rd.padded_bases, 687) 1726 self.assertEqual(record.contigs[0].reads[1].rd.info_items, 0) 1727 self.assertEqual(record.contigs[0].reads[1].rd.read_tags, 0) 1728 center = len(record.contigs[0].reads[1].rd.sequence) // 2 1729 self.assertEqual(record.contigs[0].reads[1].rd.sequence[:10], "ccgtcctgag") 1730 self.assertEqual( 1731 record.contigs[0].reads[1].rd.sequence[center - 5 : center + 5], 1732 "cacagcccT*", 1733 ) 1734 self.assertEqual(record.contigs[0].reads[1].rd.sequence[-10:], "Ttttgtttta") 1735 self.assertEqual(record.contigs[0].reads[1].qa.qual_clipping_start, 12) 1736 self.assertEqual(record.contigs[0].reads[1].qa.qual_clipping_end, 353) 1737 self.assertEqual(record.contigs[0].reads[1].qa.align_clipping_start, 9) 1738 self.assertEqual(record.contigs[0].reads[1].qa.align_clipping_end, 572) 1739 self.assertEqual(record.contigs[0].reads[1].ds.chromat_file, "K26-526t") 1740 self.assertEqual(record.contigs[0].reads[1].ds.phd_file, "K26-526t.phd.1") 1741 self.assertEqual(record.contigs[0].reads[1].ds.time, "Thu Sep 12 15:42:33 1996") 1742 self.assertEqual(record.contigs[0].reads[1].ds.chem, "") 1743 self.assertEqual(record.contigs[0].reads[1].ds.dye, "") 1744 self.assertEqual(record.contigs[0].reads[1].ds.template, "") 1745 self.assertEqual(record.contigs[0].reads[1].ds.direction, "") 1746 self.assertIsNone(record.contigs[0].reads[1].rt) 1747 self.assertIsNone(record.contigs[0].reads[1].wr) 1748 1749 self.assertEqual(record.contigs[0].reads[2].rd.name, "K26-961c") 1750 self.assertEqual(record.contigs[0].reads[2].rd.padded_bases, 517) 1751 self.assertEqual(record.contigs[0].reads[2].rd.info_items, 0) 1752 self.assertEqual(record.contigs[0].reads[2].rd.read_tags, 0) 1753 center = len(record.contigs[0].reads[2].rd.sequence) // 2 1754 self.assertEqual(record.contigs[0].reads[2].rd.sequence[:10], "aatattaccg") 1755 self.assertEqual( 1756 record.contigs[0].reads[2].rd.sequence[center - 5 : center + 5], 1757 "CAGATGGGTT", 1758 ) 1759 self.assertEqual(record.contigs[0].reads[2].rd.sequence[-10:], "ctattcaggg") 1760 self.assertEqual(record.contigs[0].reads[2].qa.qual_clipping_start, 20) 1761 self.assertEqual(record.contigs[0].reads[2].qa.qual_clipping_end, 415) 1762 self.assertEqual(record.contigs[0].reads[2].qa.align_clipping_start, 26) 1763 self.assertEqual(record.contigs[0].reads[2].qa.align_clipping_end, 514) 1764 self.assertEqual(record.contigs[0].reads[2].ds.chromat_file, "K26-961c") 1765 self.assertEqual(record.contigs[0].reads[2].ds.phd_file, "K26-961c.phd.1") 1766 self.assertEqual(record.contigs[0].reads[2].ds.time, "Thu Sep 12 15:42:37 1996") 1767 self.assertEqual(record.contigs[0].reads[2].ds.chem, "") 1768 self.assertEqual(record.contigs[0].reads[2].ds.dye, "") 1769 self.assertEqual(record.contigs[0].reads[2].ds.template, "") 1770 self.assertEqual(record.contigs[0].reads[2].ds.direction, "") 1771 self.assertIsNone(record.contigs[0].reads[2].rt) 1772 self.assertIsNone(record.contigs[0].reads[2].wr) 1773 1774 self.assertEqual(record.contigs[0].reads[3].rd.name, "K26-394c") 1775 self.assertEqual(record.contigs[0].reads[3].rd.padded_bases, 628) 1776 self.assertEqual(record.contigs[0].reads[3].rd.info_items, 0) 1777 self.assertEqual(record.contigs[0].reads[3].rd.read_tags, 0) 1778 center = len(record.contigs[0].reads[3].rd.sequence) // 2 1779 self.assertEqual(record.contigs[0].reads[3].rd.sequence[:10], "ctgcgtatcg") 1780 self.assertEqual( 1781 record.contigs[0].reads[3].rd.sequence[center - 5 : center + 5], 1782 "AGGATTGCTT", 1783 ) 1784 self.assertEqual(record.contigs[0].reads[3].rd.sequence[-10:], "aaccctgggt") 1785 self.assertEqual(record.contigs[0].reads[3].qa.qual_clipping_start, 18) 1786 self.assertEqual(record.contigs[0].reads[3].qa.qual_clipping_end, 368) 1787 self.assertEqual(record.contigs[0].reads[3].qa.align_clipping_start, 11) 1788 self.assertEqual(record.contigs[0].reads[3].qa.align_clipping_end, 502) 1789 self.assertEqual(record.contigs[0].reads[3].ds.chromat_file, "K26-394c") 1790 self.assertEqual(record.contigs[0].reads[3].ds.phd_file, "K26-394c.phd.1") 1791 self.assertEqual(record.contigs[0].reads[3].ds.time, "Thu Sep 12 15:42:32 1996") 1792 self.assertEqual(record.contigs[0].reads[3].ds.chem, "") 1793 self.assertEqual(record.contigs[0].reads[3].ds.dye, "") 1794 self.assertEqual(record.contigs[0].reads[3].ds.template, "") 1795 self.assertEqual(record.contigs[0].reads[3].ds.direction, "") 1796 self.assertIsNone(record.contigs[0].reads[3].rt) 1797 self.assertIsNone(record.contigs[0].reads[3].wr) 1798 1799 self.assertEqual(record.contigs[0].reads[4].rd.name, "K26-291s") 1800 self.assertEqual(record.contigs[0].reads[4].rd.padded_bases, 556) 1801 self.assertEqual(record.contigs[0].reads[4].rd.info_items, 0) 1802 self.assertEqual(record.contigs[0].reads[4].rd.read_tags, 0) 1803 center = len(record.contigs[0].reads[4].rd.sequence) // 2 1804 self.assertEqual(record.contigs[0].reads[4].rd.sequence[:10], "gaggatcgct") 1805 self.assertEqual( 1806 record.contigs[0].reads[4].rd.sequence[center - 5 : center + 5], 1807 "GTgcgaggat", 1808 ) 1809 self.assertEqual(record.contigs[0].reads[4].rd.sequence[-10:], "caggcagatg") 1810 self.assertEqual(record.contigs[0].reads[4].qa.qual_clipping_start, 11) 1811 self.assertEqual(record.contigs[0].reads[4].qa.qual_clipping_end, 373) 1812 self.assertEqual(record.contigs[0].reads[4].qa.align_clipping_start, 11) 1813 self.assertEqual(record.contigs[0].reads[4].qa.align_clipping_end, 476) 1814 self.assertEqual(record.contigs[0].reads[4].ds.chromat_file, "K26-291s") 1815 self.assertEqual(record.contigs[0].reads[4].ds.phd_file, "K26-291s.phd.1") 1816 self.assertEqual(record.contigs[0].reads[4].ds.time, "Thu Sep 12 15:42:31 1996") 1817 self.assertEqual(record.contigs[0].reads[4].ds.chem, "") 1818 self.assertEqual(record.contigs[0].reads[4].ds.dye, "") 1819 self.assertEqual(record.contigs[0].reads[4].ds.template, "") 1820 self.assertEqual(record.contigs[0].reads[4].ds.direction, "") 1821 self.assertIsNone(record.contigs[0].reads[4].rt) 1822 self.assertIsNone(record.contigs[0].reads[4].wr) 1823 1824 self.assertEqual(record.contigs[0].reads[5].rd.name, "K26-822c") 1825 self.assertEqual(record.contigs[0].reads[5].rd.padded_bases, 593) 1826 self.assertEqual(record.contigs[0].reads[5].rd.info_items, 0) 1827 self.assertEqual(record.contigs[0].reads[5].rd.read_tags, 0) 1828 center = len(record.contigs[0].reads[5].rd.sequence) // 2 1829 self.assertEqual(record.contigs[0].reads[5].rd.sequence[:10], "ggggatccg*") 1830 self.assertEqual( 1831 record.contigs[0].reads[5].rd.sequence[center - 5 : center + 5], 1832 "GCaAgacCCt", 1833 ) 1834 self.assertEqual(record.contigs[0].reads[5].rd.sequence[-10:], "gttgggtttg") 1835 1836 self.assertEqual(record.contigs[0].reads[5].qa.qual_clipping_start, 25) 1837 self.assertEqual(record.contigs[0].reads[5].qa.qual_clipping_end, 333) 1838 self.assertEqual(record.contigs[0].reads[5].qa.align_clipping_start, 16) 1839 self.assertEqual(record.contigs[0].reads[5].qa.align_clipping_end, 593) 1840 self.assertEqual(record.contigs[0].reads[5].ds.chromat_file, "K26-822c") 1841 self.assertEqual(record.contigs[0].reads[5].ds.phd_file, "K26-822c.phd.1") 1842 self.assertEqual(record.contigs[0].reads[5].ds.time, "Thu Sep 12 15:42:36 1996") 1843 self.assertEqual(record.contigs[0].reads[5].ds.chem, "") 1844 self.assertEqual(record.contigs[0].reads[5].ds.dye, "") 1845 self.assertEqual(record.contigs[0].reads[5].ds.template, "") 1846 self.assertEqual(record.contigs[0].reads[5].ds.direction, "") 1847 self.assertIsNone(record.contigs[0].reads[5].rt) 1848 self.assertIsNone(record.contigs[0].reads[5].wr) 1849 1850 self.assertEqual(record.contigs[0].reads[6].rd.name, "K26-572c") 1851 self.assertEqual(record.contigs[0].reads[6].rd.padded_bases, 594) 1852 self.assertEqual(record.contigs[0].reads[6].rd.info_items, 0) 1853 self.assertEqual(record.contigs[0].reads[6].rd.read_tags, 0) 1854 center = len(record.contigs[0].reads[6].rd.sequence) // 2 1855 self.assertEqual(record.contigs[0].reads[6].rd.sequence[:10], "agccccgggc") 1856 self.assertEqual( 1857 record.contigs[0].reads[6].rd.sequence[center - 5 : center + 5], 1858 "ggatcACATA", 1859 ) 1860 self.assertEqual(record.contigs[0].reads[6].rd.sequence[-10:], "aatagtaaca") 1861 self.assertEqual(record.contigs[0].reads[6].qa.qual_clipping_start, 249) 1862 self.assertEqual(record.contigs[0].reads[6].qa.qual_clipping_end, 584) 1863 self.assertEqual(record.contigs[0].reads[6].qa.align_clipping_start, 1) 1864 self.assertEqual(record.contigs[0].reads[6].qa.align_clipping_end, 586) 1865 self.assertEqual(record.contigs[0].reads[6].ds.chromat_file, "K26-572c") 1866 self.assertEqual(record.contigs[0].reads[6].ds.phd_file, "K26-572c.phd.1") 1867 self.assertEqual(record.contigs[0].reads[6].ds.time, "Thu Sep 12 15:42:34 1996") 1868 self.assertEqual(record.contigs[0].reads[6].ds.chem, "") 1869 self.assertEqual(record.contigs[0].reads[6].ds.dye, "") 1870 self.assertEqual(record.contigs[0].reads[6].ds.template, "") 1871 self.assertEqual(record.contigs[0].reads[6].ds.direction, "") 1872 self.assertIsNone(record.contigs[0].reads[6].rt) 1873 self.assertIsNone(record.contigs[0].reads[6].wr) 1874 1875 self.assertEqual(record.contigs[0].reads[7].rd.name, "K26-766c") 1876 self.assertEqual(record.contigs[0].reads[7].rd.padded_bases, 603) 1877 self.assertEqual(record.contigs[0].reads[7].rd.info_items, 0) 1878 self.assertEqual(record.contigs[0].reads[7].rd.read_tags, 0) 1879 center = len(record.contigs[0].reads[7].rd.sequence) // 2 1880 self.assertEqual(record.contigs[0].reads[7].rd.sequence[:10], "gaataattgg") 1881 self.assertEqual( 1882 record.contigs[0].reads[7].rd.sequence[center - 5 : center + 5], 1883 "TggCCCATCT", 1884 ) 1885 self.assertEqual(record.contigs[0].reads[7].rd.sequence[-10:], "gaaccacacg") 1886 self.assertEqual(record.contigs[0].reads[7].qa.qual_clipping_start, 240) 1887 self.assertEqual(record.contigs[0].reads[7].qa.qual_clipping_end, 584) 1888 self.assertEqual(record.contigs[0].reads[7].qa.align_clipping_start, 126) 1889 self.assertEqual(record.contigs[0].reads[7].qa.align_clipping_end, 583) 1890 self.assertEqual(record.contigs[0].reads[7].ds.chromat_file, "K26-766c") 1891 self.assertEqual(record.contigs[0].reads[7].ds.phd_file, "K26-766c.phd.1") 1892 self.assertEqual(record.contigs[0].reads[7].ds.time, "Thu Sep 12 15:42:35 1996") 1893 self.assertEqual(record.contigs[0].reads[7].ds.chem, "") 1894 self.assertEqual(record.contigs[0].reads[7].ds.dye, "") 1895 self.assertEqual(record.contigs[0].reads[7].ds.template, "") 1896 self.assertEqual(record.contigs[0].reads[7].ds.direction, "") 1897 self.assertIsNone(record.contigs[0].reads[7].rt) 1898 self.assertIsNone(record.contigs[0].reads[7].wr) 1899 1900 def test_check_record_parser(self): 1901 """Test to check that record parser parses each contig into a record.""" 1902 contigs = Ace.parse(self.handle) 1903 1904 # First (and only) contig 1905 contig = next(contigs) 1906 1907 self.assertEqual(len(contig.reads), 8) 1908 self.assertEqual(contig.name, "Contig1") 1909 self.assertEqual(contig.nbases, 1475) 1910 self.assertEqual(contig.nreads, 8) 1911 self.assertEqual(contig.nsegments, 156) 1912 self.assertEqual(contig.uorc, "U") 1913 center = len(contig.sequence) // 2 1914 self.assertEqual(contig.sequence[:10], "agccccgggc") 1915 self.assertEqual(contig.sequence[center - 5 : center + 5], "CTTCCCCAGG") 1916 self.assertEqual(contig.sequence[-10:], "gttgggtttg") 1917 center = len(contig.quality) // 2 1918 self.assertEqual(contig.quality[:10], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0]) 1919 self.assertEqual( 1920 contig.quality[center - 5 : center + 5], 1921 [90, 90, 90, 90, 90, 90, 90, 90, 89, 89], 1922 ) 1923 self.assertEqual(contig.quality[-10:], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0]) 1924 self.assertEqual(len(contig.af), 8) 1925 self.assertEqual(len(contig.bs), 156) 1926 self.assertEqual(contig.af[4].name, "K26-291s") 1927 self.assertEqual(contig.af[4].coru, "U") 1928 self.assertEqual(contig.af[4].padded_start, 828) 1929 self.assertEqual(contig.af[7].name, "K26-766c") 1930 self.assertEqual(contig.af[7].coru, "C") 1931 self.assertEqual(contig.af[7].padded_start, 408) 1932 self.assertEqual(contig.bs[78].name, "K26-394c") 1933 self.assertEqual(contig.bs[78].padded_start, 987) 1934 self.assertEqual(contig.bs[78].padded_end, 987) 1935 self.assertEqual(contig.bs[155].name, "K26-822c") 1936 self.assertEqual(contig.bs[155].padded_start, 1303) 1937 self.assertEqual(contig.bs[155].padded_end, 1475) 1938 self.assertEqual(len(contig.ct), 3) 1939 self.assertEqual(contig.ct[0].name, "Contig1") 1940 self.assertEqual(contig.ct[0].tag_type, "repeat") 1941 self.assertEqual(contig.ct[0].program, "consed") 1942 self.assertEqual(contig.ct[0].padded_start, 976) 1943 self.assertEqual(contig.ct[0].padded_end, 986) 1944 self.assertEqual(contig.ct[0].date, "971218:180623") 1945 self.assertEqual(contig.ct[0].info, []) 1946 self.assertEqual(contig.ct[1].name, "Contig1") 1947 self.assertEqual(contig.ct[1].tag_type, "comment") 1948 self.assertEqual(contig.ct[1].program, "consed") 1949 self.assertEqual(contig.ct[1].padded_start, 996) 1950 self.assertEqual(contig.ct[1].padded_end, 1007) 1951 self.assertEqual(contig.ct[1].date, "971218:180623") 1952 self.assertEqual( 1953 contig.ct[1].info, 1954 ["This is line 1 of a comment", "There may be any number of lines"], 1955 ) 1956 self.assertEqual(contig.ct[2].name, "Contig1") 1957 self.assertEqual(contig.ct[2].tag_type, "oligo") 1958 self.assertEqual(contig.ct[2].program, "consed") 1959 self.assertEqual(contig.ct[2].padded_start, 963) 1960 self.assertEqual(contig.ct[2].padded_end, 987) 1961 self.assertEqual(contig.ct[2].date, "971218:180623") 1962 self.assertEqual( 1963 contig.ct[2].info, 1964 ["standard.1 acataagacattctaaatttttact 50 U", "seq from clone"], 1965 ) 1966 self.assertEqual(len(contig.wa), 1) 1967 self.assertEqual(contig.wa[0].tag_type, "phrap_params") 1968 self.assertEqual(contig.wa[0].program, "phrap") 1969 self.assertEqual(contig.wa[0].date, "990621:161947") 1970 self.assertEqual( 1971 contig.wa[0].info, 1972 [ 1973 "/usr/local/genome/bin/phrap standard.fasta.screen -new_ace -view", 1974 "phrap version 0.990319", 1975 ], 1976 ) 1977 1978 self.assertEqual(len(contig.reads), 8) 1979 1980 self.assertEqual(contig.reads[0].rd.name, "K26-217c") 1981 self.assertEqual(contig.reads[0].rd.padded_bases, 563) 1982 self.assertEqual(contig.reads[0].rd.info_items, 0) 1983 self.assertEqual(contig.reads[0].rd.read_tags, 0) 1984 center = len(contig.reads[0].rd.sequence) // 2 1985 self.assertEqual(contig.reads[0].rd.sequence[:10], "tcccCgtgag") 1986 self.assertEqual( 1987 contig.reads[0].rd.sequence[center - 5 : center + 5], "CTCCTGcctg" 1988 ) 1989 self.assertEqual(contig.reads[0].rd.sequence[-10:], "ggcccccctc") 1990 self.assertEqual(contig.reads[0].qa.qual_clipping_start, 19) 1991 self.assertEqual(contig.reads[0].qa.qual_clipping_end, 349) 1992 self.assertEqual(contig.reads[0].qa.align_clipping_start, 19) 1993 self.assertEqual(contig.reads[0].qa.align_clipping_end, 424) 1994 self.assertEqual(contig.reads[0].ds.chromat_file, "K26-217c") 1995 self.assertEqual(contig.reads[0].ds.phd_file, "K26-217c.phd.1") 1996 self.assertEqual(contig.reads[0].ds.time, "Thu Sep 12 15:42:38 1996") 1997 self.assertEqual(contig.reads[0].ds.chem, "") 1998 self.assertEqual(contig.reads[0].ds.dye, "") 1999 self.assertEqual(contig.reads[0].ds.template, "") 2000 self.assertEqual(contig.reads[0].ds.direction, "") 2001 self.assertIsNone(contig.reads[0].rt) 2002 self.assertIsNone(contig.reads[0].wr) 2003 2004 self.assertEqual(contig.reads[1].rd.name, "K26-526t") 2005 self.assertEqual(contig.reads[1].rd.padded_bases, 687) 2006 self.assertEqual(contig.reads[1].rd.info_items, 0) 2007 self.assertEqual(contig.reads[1].rd.read_tags, 0) 2008 center = len(contig.reads[1].rd.sequence) // 2 2009 self.assertEqual(contig.reads[1].rd.sequence[:10], "ccgtcctgag") 2010 self.assertEqual( 2011 contig.reads[1].rd.sequence[center - 5 : center + 5], "cacagcccT*" 2012 ) 2013 self.assertEqual(contig.reads[1].rd.sequence[-10:], "Ttttgtttta") 2014 self.assertEqual(contig.reads[1].qa.qual_clipping_start, 12) 2015 self.assertEqual(contig.reads[1].qa.qual_clipping_end, 353) 2016 self.assertEqual(contig.reads[1].qa.align_clipping_start, 9) 2017 self.assertEqual(contig.reads[1].qa.align_clipping_end, 572) 2018 self.assertEqual(contig.reads[1].ds.chromat_file, "K26-526t") 2019 self.assertEqual(contig.reads[1].ds.phd_file, "K26-526t.phd.1") 2020 self.assertEqual(contig.reads[1].ds.time, "Thu Sep 12 15:42:33 1996") 2021 self.assertEqual(contig.reads[1].ds.chem, "") 2022 self.assertEqual(contig.reads[1].ds.dye, "") 2023 self.assertEqual(contig.reads[1].ds.template, "") 2024 self.assertEqual(contig.reads[1].ds.direction, "") 2025 self.assertIsNone(contig.reads[1].rt) 2026 self.assertIsNone(contig.reads[1].wr) 2027 2028 self.assertEqual(contig.reads[2].rd.name, "K26-961c") 2029 self.assertEqual(contig.reads[2].rd.padded_bases, 517) 2030 self.assertEqual(contig.reads[2].rd.info_items, 0) 2031 self.assertEqual(contig.reads[2].rd.read_tags, 0) 2032 center = len(contig.reads[2].rd.sequence) // 2 2033 self.assertEqual(contig.reads[2].rd.sequence[:10], "aatattaccg") 2034 self.assertEqual( 2035 contig.reads[2].rd.sequence[center - 5 : center + 5], "CAGATGGGTT" 2036 ) 2037 self.assertEqual(contig.reads[2].rd.sequence[-10:], "ctattcaggg") 2038 self.assertEqual(contig.reads[2].qa.qual_clipping_start, 20) 2039 self.assertEqual(contig.reads[2].qa.qual_clipping_end, 415) 2040 self.assertEqual(contig.reads[2].qa.align_clipping_start, 26) 2041 self.assertEqual(contig.reads[2].qa.align_clipping_end, 514) 2042 self.assertEqual(contig.reads[2].ds.chromat_file, "K26-961c") 2043 self.assertEqual(contig.reads[2].ds.phd_file, "K26-961c.phd.1") 2044 self.assertEqual(contig.reads[2].ds.time, "Thu Sep 12 15:42:37 1996") 2045 self.assertEqual(contig.reads[2].ds.chem, "") 2046 self.assertEqual(contig.reads[2].ds.dye, "") 2047 self.assertEqual(contig.reads[2].ds.template, "") 2048 self.assertEqual(contig.reads[2].ds.direction, "") 2049 self.assertIsNone(contig.reads[2].rt) 2050 self.assertIsNone(contig.reads[2].wr) 2051 2052 self.assertEqual(contig.reads[3].rd.name, "K26-394c") 2053 self.assertEqual(contig.reads[3].rd.padded_bases, 628) 2054 self.assertEqual(contig.reads[3].rd.info_items, 0) 2055 self.assertEqual(contig.reads[3].rd.read_tags, 0) 2056 center = len(contig.reads[3].rd.sequence) // 2 2057 self.assertEqual(contig.reads[3].rd.sequence[:10], "ctgcgtatcg") 2058 self.assertEqual( 2059 contig.reads[3].rd.sequence[center - 5 : center + 5], "AGGATTGCTT" 2060 ) 2061 self.assertEqual(contig.reads[3].rd.sequence[-10:], "aaccctgggt") 2062 self.assertEqual(contig.reads[3].qa.qual_clipping_start, 18) 2063 self.assertEqual(contig.reads[3].qa.qual_clipping_end, 368) 2064 self.assertEqual(contig.reads[3].qa.align_clipping_start, 11) 2065 self.assertEqual(contig.reads[3].qa.align_clipping_end, 502) 2066 self.assertEqual(contig.reads[3].ds.chromat_file, "K26-394c") 2067 self.assertEqual(contig.reads[3].ds.phd_file, "K26-394c.phd.1") 2068 self.assertEqual(contig.reads[3].ds.time, "Thu Sep 12 15:42:32 1996") 2069 self.assertEqual(contig.reads[3].ds.chem, "") 2070 self.assertEqual(contig.reads[3].ds.dye, "") 2071 self.assertEqual(contig.reads[3].ds.template, "") 2072 self.assertEqual(contig.reads[3].ds.direction, "") 2073 self.assertIsNone(contig.reads[3].rt) 2074 self.assertIsNone(contig.reads[3].wr) 2075 2076 self.assertEqual(contig.reads[4].rd.name, "K26-291s") 2077 self.assertEqual(contig.reads[4].rd.padded_bases, 556) 2078 self.assertEqual(contig.reads[4].rd.info_items, 0) 2079 self.assertEqual(contig.reads[4].rd.read_tags, 0) 2080 center = len(contig.reads[4].rd.sequence) // 2 2081 self.assertEqual(contig.reads[4].rd.sequence[:10], "gaggatcgct") 2082 self.assertEqual( 2083 contig.reads[4].rd.sequence[center - 5 : center + 5], "GTgcgaggat" 2084 ) 2085 self.assertEqual(contig.reads[4].rd.sequence[-10:], "caggcagatg") 2086 self.assertEqual(contig.reads[4].qa.qual_clipping_start, 11) 2087 self.assertEqual(contig.reads[4].qa.qual_clipping_end, 373) 2088 self.assertEqual(contig.reads[4].qa.align_clipping_start, 11) 2089 self.assertEqual(contig.reads[4].qa.align_clipping_end, 476) 2090 self.assertEqual(contig.reads[4].ds.chromat_file, "K26-291s") 2091 self.assertEqual(contig.reads[4].ds.phd_file, "K26-291s.phd.1") 2092 self.assertEqual(contig.reads[4].ds.time, "Thu Sep 12 15:42:31 1996") 2093 self.assertEqual(contig.reads[4].ds.chem, "") 2094 self.assertEqual(contig.reads[4].ds.dye, "") 2095 self.assertEqual(contig.reads[4].ds.template, "") 2096 self.assertEqual(contig.reads[4].ds.direction, "") 2097 self.assertIsNone(contig.reads[4].rt) 2098 self.assertIsNone(contig.reads[4].wr) 2099 2100 self.assertEqual(contig.reads[5].rd.name, "K26-822c") 2101 self.assertEqual(contig.reads[5].rd.padded_bases, 593) 2102 self.assertEqual(contig.reads[5].rd.info_items, 0) 2103 self.assertEqual(contig.reads[5].rd.read_tags, 0) 2104 center = len(contig.reads[5].rd.sequence) // 2 2105 self.assertEqual(contig.reads[5].rd.sequence[:10], "ggggatccg*") 2106 self.assertEqual( 2107 contig.reads[5].rd.sequence[center - 5 : center + 5], "GCaAgacCCt" 2108 ) 2109 self.assertEqual(contig.reads[5].rd.sequence[-10:], "gttgggtttg") 2110 2111 self.assertEqual(contig.reads[5].qa.qual_clipping_start, 25) 2112 self.assertEqual(contig.reads[5].qa.qual_clipping_end, 333) 2113 self.assertEqual(contig.reads[5].qa.align_clipping_start, 16) 2114 self.assertEqual(contig.reads[5].qa.align_clipping_end, 593) 2115 self.assertEqual(contig.reads[5].ds.chromat_file, "K26-822c") 2116 self.assertEqual(contig.reads[5].ds.phd_file, "K26-822c.phd.1") 2117 self.assertEqual(contig.reads[5].ds.time, "Thu Sep 12 15:42:36 1996") 2118 self.assertEqual(contig.reads[5].ds.chem, "") 2119 self.assertEqual(contig.reads[5].ds.dye, "") 2120 self.assertEqual(contig.reads[5].ds.template, "") 2121 self.assertEqual(contig.reads[5].ds.direction, "") 2122 self.assertIsNone(contig.reads[5].rt) 2123 self.assertIsNone(contig.reads[5].wr) 2124 2125 self.assertEqual(contig.reads[6].rd.name, "K26-572c") 2126 self.assertEqual(contig.reads[6].rd.padded_bases, 594) 2127 self.assertEqual(contig.reads[6].rd.info_items, 0) 2128 self.assertEqual(contig.reads[6].rd.read_tags, 0) 2129 center = len(contig.reads[6].rd.sequence) // 2 2130 self.assertEqual(contig.reads[6].rd.sequence[:10], "agccccgggc") 2131 self.assertEqual( 2132 contig.reads[6].rd.sequence[center - 5 : center + 5], "ggatcACATA" 2133 ) 2134 self.assertEqual(contig.reads[6].rd.sequence[-10:], "aatagtaaca") 2135 self.assertEqual(contig.reads[6].qa.qual_clipping_start, 249) 2136 self.assertEqual(contig.reads[6].qa.qual_clipping_end, 584) 2137 self.assertEqual(contig.reads[6].qa.align_clipping_start, 1) 2138 self.assertEqual(contig.reads[6].qa.align_clipping_end, 586) 2139 self.assertEqual(contig.reads[6].ds.chromat_file, "K26-572c") 2140 self.assertEqual(contig.reads[6].ds.phd_file, "K26-572c.phd.1") 2141 self.assertEqual(contig.reads[6].ds.time, "Thu Sep 12 15:42:34 1996") 2142 self.assertEqual(contig.reads[6].ds.chem, "") 2143 self.assertEqual(contig.reads[6].ds.dye, "") 2144 self.assertEqual(contig.reads[6].ds.template, "") 2145 self.assertEqual(contig.reads[6].ds.direction, "") 2146 self.assertIsNone(contig.reads[6].rt) 2147 self.assertIsNone(contig.reads[6].wr) 2148 2149 self.assertEqual(contig.reads[7].rd.name, "K26-766c") 2150 self.assertEqual(contig.reads[7].rd.padded_bases, 603) 2151 self.assertEqual(contig.reads[7].rd.info_items, 0) 2152 self.assertEqual(contig.reads[7].rd.read_tags, 0) 2153 center = len(contig.reads[7].rd.sequence) // 2 2154 self.assertEqual(contig.reads[7].rd.sequence[:10], "gaataattgg") 2155 self.assertEqual( 2156 contig.reads[7].rd.sequence[center - 5 : center + 5], "TggCCCATCT" 2157 ) 2158 self.assertEqual(contig.reads[7].rd.sequence[-10:], "gaaccacacg") 2159 self.assertEqual(contig.reads[7].qa.qual_clipping_start, 240) 2160 self.assertEqual(contig.reads[7].qa.qual_clipping_end, 584) 2161 self.assertEqual(contig.reads[7].qa.align_clipping_start, 126) 2162 self.assertEqual(contig.reads[7].qa.align_clipping_end, 583) 2163 self.assertEqual(contig.reads[7].ds.chromat_file, "K26-766c") 2164 self.assertEqual(contig.reads[7].ds.phd_file, "K26-766c.phd.1") 2165 self.assertEqual(contig.reads[7].ds.time, "Thu Sep 12 15:42:35 1996") 2166 self.assertEqual(contig.reads[7].ds.chem, "") 2167 self.assertEqual(contig.reads[7].ds.dye, "") 2168 self.assertEqual(contig.reads[7].ds.template, "") 2169 self.assertEqual(contig.reads[7].ds.direction, "") 2170 self.assertIsNone(contig.reads[7].rt) 2171 self.assertIsNone(contig.reads[7].wr) 2172 2173 # Make sure there are no more contigs 2174 self.assertRaises(StopIteration, next, contigs) 2175 2176 2177if __name__ == "__main__": 2178 runner = unittest.TextTestRunner(verbosity=2) 2179 unittest.main(testRunner=runner) 2180