예제 #1
0
def pair1():
    p = (SimpleMapping(), SimpleMapping())
    p[0].set_name("p1:read/1")
    p[1].set_name("p1:read/2")
    p[0].tid = "chr1"
    p[1].tid = "chr1"
    p[0].ref_id = 0
    p[1].ref_id = 0
    p[0].pos = 12345
    p[1].pos = p[0].pos + 150
    p[0].set_read1(True)
    p[1].set_read2(True)
    p[0].qual = 50
    p[1].qual = 30
    return p
예제 #2
0
 def setUp(self):
     self.monitor = StandardMonitor(SavingLogger())
     self.filter = FilterLink(self.monitor)
     self.receiver = self.filter.set_next(type(self).Receiver())
     # create two mappings, m1, m2.  We put them in self.pair
     # m1 has:
     #   name = first
     # 	tid = tid1
     # m2 has:
     #   name = second
     #   tid = tid2
     self.pair = [ SimpleMapping(), SimpleMapping() ]
     self.m1, self.m2 = self.pair
     self.m1.set_name("first") ; self.m2.set_name("second")
     self.m1.tid = "tid1" ; self.m2.tid = "tid2"
     self.m1.qual = 50 ; self.m2.qual = 30
예제 #3
0
def pair2():
    # reversed reads such that r2 is at a lower position than r1
    p = (SimpleMapping(), SimpleMapping())
    p[0].set_name("p1:read/1")
    p[1].set_name("p1:read/2")
    p[0].tid = "chr1"
    p[1].tid = "chr1"
    p[0].ref_id = 0
    p[1].ref_id = 0
    p[0].pos = 12345 + 150
    p[1].pos = p[0].pos - 150
    p[0].set_read1(True)
    p[1].set_read2(True)
    p[0].qual = 50
    p[1].qual = 30
    return p
예제 #4
0
    def setUp(self):
        self.pair = (SimpleMapping(), SimpleMapping())
        self.pair[0].set_read1(True)
        self.pair[1].set_read2(True)

        for m in self.pair:
            m.set_paired(True)
            m.set_name("CRESSIA_129:1:1:10605:12550#0")
            m.tid = "chr21"
            m.ref_id = 20
            m.qual = 60
            m.set_cigar([(100, "M")])
            m.mtid = "chr21"
            m.m_ref_id = 20

        m1, m2 = self.pair
        m1.pos = m2.mpos = 25839277
        m2.pos = m1.mpos = 25839109
        m1.isize = -268
        m2.isize = 268
예제 #5
0
 def setUp(self):
     self.mapping = SimpleMapping()
     self.f = SamFormatter()
예제 #6
0
class TestSamFormatter(unittest.TestCase):

    def setUp(self):
        self.mapping = SimpleMapping()
        self.f = SamFormatter()

    def test_default(self):
        self.assertEqual("\t".join( map(str, ['', 0, "*", 0, 0, "*", "*", 0, 0, "", "" ])), self.__do_format())

    def test_name(self):
        self.mapping.set_name("my name")
        self.assertEqual("\t".join( map(str, ["my name", 0, "*", 0, 0, "*", "*", 0, 0, "", "" ])), self.__do_format())

    def test_flag(self):
        self.mapping.flag = 163
        self.assertEqual("\t".join( map(str, ['', 163, "*", 0, 0, "*", "*", 0, 0, "", "" ])), self.__do_format())

    def test_reference(self):
        self.mapping.tid = "chr21"
        self.assertEqual("\t".join( map(str, ['', 0, "chr21", 0, 0, "*", "*", 0, 0, "", "" ])), self.__do_format())

    def test_mate_reference(self):
        self.mapping.mtid = "chr21"
        self.assertEqual("\t".join( map(str, ['', 0, "*", 0, 0, "*", "chr21", 0, 0, "", "" ])), self.__do_format())
        self.mapping.mtid = "="
        self.assertEqual("\t".join( map(str, ['', 0, "*", 0, 0, "*", "=", 0, 0, "", "" ])), self.__do_format())

    def test_pos(self):
        self.mapping.pos = 1234
        self.assertEqual("\t".join( map(str, ['', 0, "*", 1234, 0, "*", "*", 0, 0, "", "" ])), self.__do_format())

    def test_mate_pos(self):
        self.mapping.mpos = 1234
        self.assertEqual("\t".join( map(str, ['', 0, "*", 0, 0, "*", "*", 1234, 0, "", "" ])), self.__do_format())

    def test_mapq(self):
        self.mapping.qual = 55
        self.assertEqual("\t".join( map(str, ['', 0, "*", 0, 55, "*", "*", 0, 0, "", "" ])), self.__do_format())

    def test_cigar(self):
        self.mapping.set_cigar([ (100, 'M') ])
        self.assertEqual("\t".join( map(str, ['', 0, "*", 0, 0, "100M", "*", 0, 0, "", "" ])), self.__do_format())
        self.mapping.set_cigar([ (80, 'M'), (20, 'S') ])
        self.assertEqual("\t".join( map(str, ['', 0, "*", 0, 0, "80M20S", "*", 0, 0, "", "" ])), self.__do_format())

    def test_isize(self):
        self.mapping.isize = 273
        self.assertEqual("\t".join( map(str, ['', 0, "*", 0, 0, "*", "*", 0, 273, "", "" ])), self.__do_format())
        self.mapping.isize = -273
        self.assertEqual("\t".join( map(str, ['', 0, "*", 0, 0, "*", "*", 0, -273, "", "" ])), self.__do_format())

    def test_seq(self):
        self.mapping.set_seq_5("AGCTNN")
        self.assertEqual("\t".join( map(str, ['', 0, "*", 0, 0, "*", "*", 0, 0, "AGCTNN", "" ])), self.__do_format())

    def test_qual(self):
        bq = array.array('B', [22, 33, 45])
        self.mapping.set_base_qualities(bq)
        self.assertEqual("\t".join( map(str, ['', 0, "*", 0, 0, "*", "*", 0, 0, "", "7BN" ])), self.__do_format())

    def test_tags(self):
        self.mapping.add_tag( ("XC", 'i', 18) )
        self.mapping.add_tag( ("HI", 'Z', "llo") )
        self.assertEqual("\t".join( map(str, ['', 0, "*", 0, 0, "*", "*", 0, 0, "", "", "XC:i:18", "HI:Z:llo" ])), self.__do_format())

    def __do_format(self):
        return self.f.format(self.mapping)
예제 #7
0
	def setUp(self):
		self.mapping = SimpleMapping()
		self.f = SamFormatter()
예제 #8
0
class TestSamFormatter(unittest.TestCase):

	def setUp(self):
		self.mapping = SimpleMapping()
		self.f = SamFormatter()

	def test_default(self):
		self.assertEqual("\t".join( map(str, ['', 0, "*", 0, 0, "*", "*", 0, 0, "", "" ])), self.__do_format())

	def test_name(self):
		self.mapping.set_name("my name")
		self.assertEqual("\t".join( map(str, ["my name", 0, "*", 0, 0, "*", "*", 0, 0, "", "" ])), self.__do_format())

	def test_flag(self):
		self.mapping.flag = 163
		self.assertEqual("\t".join( map(str, ['', 163, "*", 0, 0, "*", "*", 0, 0, "", "" ])), self.__do_format())

	def test_reference(self):
		self.mapping.tid = "chr21"
		self.assertEqual("\t".join( map(str, ['', 0, "chr21", 0, 0, "*", "*", 0, 0, "", "" ])), self.__do_format())

	def test_mate_reference(self):
		self.mapping.mtid = "chr21"
		self.assertEqual("\t".join( map(str, ['', 0, "*", 0, 0, "*", "chr21", 0, 0, "", "" ])), self.__do_format())
		self.mapping.mtid = "="
		self.assertEqual("\t".join( map(str, ['', 0, "*", 0, 0, "*", "=", 0, 0, "", "" ])), self.__do_format())

	def test_pos(self):
		self.mapping.pos = 1234
		self.assertEqual("\t".join( map(str, ['', 0, "*", 1234, 0, "*", "*", 0, 0, "", "" ])), self.__do_format())

	def test_mate_pos(self):
		self.mapping.mpos = 1234
		self.assertEqual("\t".join( map(str, ['', 0, "*", 0, 0, "*", "*", 1234, 0, "", "" ])), self.__do_format())

	def test_mapq(self):
		self.mapping.qual = 55
		self.assertEqual("\t".join( map(str, ['', 0, "*", 0, 55, "*", "*", 0, 0, "", "" ])), self.__do_format())

	def test_cigar(self):
		self.mapping.set_cigar([ (100, 'M') ])
		self.assertEqual("\t".join( map(str, ['', 0, "*", 0, 0, "100M", "*", 0, 0, "", "" ])), self.__do_format())
		self.mapping.set_cigar([ (80, 'M'), (20, 'S') ])
		self.assertEqual("\t".join( map(str, ['', 0, "*", 0, 0, "80M20S", "*", 0, 0, "", "" ])), self.__do_format())

	def test_isize(self):
		self.mapping.isize = 273
		self.assertEqual("\t".join( map(str, ['', 0, "*", 0, 0, "*", "*", 0, 273, "", "" ])), self.__do_format())
		self.mapping.isize = -273
		self.assertEqual("\t".join( map(str, ['', 0, "*", 0, 0, "*", "*", 0, -273, "", "" ])), self.__do_format())

	def test_seq(self):
		self.mapping.set_seq_5("AGCTNN")
		self.assertEqual("\t".join( map(str, ['', 0, "*", 0, 0, "*", "*", 0, 0, "AGCTNN", "" ])), self.__do_format())

	def test_qual(self):
		bq = array.array('B', [22, 33, 45])
		self.mapping.set_base_qualities(bq)
		self.assertEqual("\t".join( map(str, ['', 0, "*", 0, 0, "*", "*", 0, 0, "", "7BN" ])), self.__do_format())

	def test_tags(self):
		self.mapping.add_tag( ("XC", 'i', 18) )
		self.mapping.add_tag( ("HI", 'Z', "llo") )
		self.assertEqual("\t".join( map(str, ['', 0, "*", 0, 0, "*", "*", 0, 0, "", "", "XC:i:18", "HI:Z:llo" ])), self.__do_format())

	def __do_format(self):
		return self.f.format(self.mapping)
예제 #9
0
 def setUp(self):
     self.mapping = SimpleMapping()
예제 #10
0
class TestProtobufSeqMapping(TestProtobufSerialization):

    def setUp(self):
        self.mapping = SimpleMapping()

    def test_simple(self):
        self.__try_and_compare_maps(self.mapping)

    def test_seq(self):
        small_seq = "AGCTNN"
        self.mapping.set_seq_5(small_seq)
        self.mapping.set_base_qualities(array.array("B", [ i + 25 for i in range(len(small_seq)) ]))
        self.__try_and_compare_maps(self.mapping)

    def test_cigar(self):
        self.mapping.set_cigar([ (100, "M") ])
        self.__try_and_compare_maps(self.mapping)
        self.mapping.set_cigar([ (80, "M"), (20, "S") ])
        self.__try_and_compare_maps(self.mapping)

    def test_flag(self):
        self.mapping.flag = 0x04
        self.__try_and_compare_maps(self.mapping)

    def test_name(self):
        self.mapping.set_name("CRESSIA_129:1:1:10029:122606#0/2")
        self.__try_and_compare_maps(self.mapping)

    def test_qual(self):
        self.mapping.qual = 60
        self.__try_and_compare_maps(self.mapping)

    def test_tags(self):
        self.mapping.add_tag( ("XC", 'i', 22) )
        self.mapping.add_tag( ("R2", 'Z', "bla") )
        self.__try_and_compare_maps(self.mapping)

    def test_pos(self):
        self.mapping.pos = 280781134
        self.__try_and_compare_maps(self.mapping)

    def test_tid(self):
        self.mapping.tid = "chr19"
        self.__try_and_compare_maps(self.mapping)

    def test_ref_id(self):
        self.mapping.ref_id = 12
        self.__try_and_compare_maps(self.mapping)
        self.mapping.ref_id = 0
        self.__try_and_compare_maps(self.mapping)

    def test_no_ref_id(self):
        self.mapping.ref_id = None
        self.__try_and_compare_maps(self.mapping)

    def __try_and_compare_maps(self, mapping):
        self.protected_compare_seq_maps(mapping, self.__pipe_map_through(mapping))

    def __pipe_map_through(self, mapping):
        message = io.serialize_seq(mapping)
        return io.unserialize_seq(message)
예제 #11
0
 def setUp(self):
     self.mapping = SimpleMapping()
예제 #12
0
class TestProtobufSeqMapping(TestProtobufSerialization):
    def setUp(self):
        self.mapping = SimpleMapping()

    def test_simple(self):
        self.__try_and_compare_maps(self.mapping)

    def test_seq(self):
        small_seq = "AGCTNN"
        self.mapping.set_seq_5(small_seq)
        self.mapping.set_base_qualities(
            array.array("B", [i + 25 for i in range(len(small_seq))]))
        self.__try_and_compare_maps(self.mapping)

    def test_cigar(self):
        self.mapping.set_cigar([(100, "M")])
        self.__try_and_compare_maps(self.mapping)
        self.mapping.set_cigar([(80, "M"), (20, "S")])
        self.__try_and_compare_maps(self.mapping)

    def test_flag(self):
        self.mapping.flag = 0x04
        self.__try_and_compare_maps(self.mapping)

    def test_name(self):
        self.mapping.set_name("CRESSIA_129:1:1:10029:122606#0/2")
        self.__try_and_compare_maps(self.mapping)

    def test_qual(self):
        self.mapping.qual = 60
        self.__try_and_compare_maps(self.mapping)

    def test_tags(self):
        self.mapping.add_tag(("XC", 'i', 22))
        self.mapping.add_tag(("R2", 'Z', "bla"))
        self.__try_and_compare_maps(self.mapping)

    def test_pos(self):
        self.mapping.pos = 280781134
        self.__try_and_compare_maps(self.mapping)

    def test_tid(self):
        self.mapping.tid = "chr19"
        self.__try_and_compare_maps(self.mapping)

    def test_ref_id(self):
        self.mapping.ref_id = 12
        self.__try_and_compare_maps(self.mapping)
        self.mapping.ref_id = 0
        self.__try_and_compare_maps(self.mapping)

    def test_no_ref_id(self):
        self.mapping.ref_id = None
        self.__try_and_compare_maps(self.mapping)

    def __try_and_compare_maps(self, mapping):
        self.protected_compare_seq_maps(mapping,
                                        self.__pipe_map_through(mapping))

    def __pipe_map_through(self, mapping):
        message = io.serialize_seq(mapping)
        return io.unserialize_seq(message)