예제 #1
0
    def test_preserves_multiple_annotations(self):
        replaced = self.middle[0:10]+self.middle[11:]
        cassette = ''.join([self.front_bs, replaced, self.back_bs])

        self.fragment.annotate(len(self.upstream)+2, len(self.upstream)+10, 'Bar', 'static', -1)
        self.fragment.annotate(len(self.upstream)+len(self.front_bs)+1,
                               len(self.upstream)+len(self.front_bs)+len(self.middle),
                               'Foo', 'changed', 1)

        r = find_swap_region_with_annotations(self.genome, cassette, self.arm_len)
        self.assertEquals(len(r), 1)
        self.assertEquals(len(r[0].cassette_annotations), 2)

        a = r[0].cassette_annotations[0]
        self.assertEquals(a['base_first'], 2)
        self.assertEquals(a['base_last'], 10)
        self.assertEquals(a['feature_name'], 'Bar')
        self.assertEquals(a['feature_type'], 'static')
        self.assertEquals(a['feature_strand'], -1)

        a = r[0].cassette_annotations[1]
        self.assertEquals(a['base_first'], len(self.front_bs)+1)
        self.assertEquals(a['base_last'], len(self.front_bs)+len(self.middle)-1)
        self.assertEquals(a['feature_name'], 'Foo -11A')
        self.assertEquals(a['feature_type'], 'changed')
        self.assertEquals(a['feature_strand'], 1)
예제 #2
0
    def test_preserves_multiple_annotations(self):
        replaced = self.middle[0:13] + self.middle[14:]
        cassette = ''.join([self.front_bs, replaced, self.back_bs])

        self.fragment.annotate(
            len(self.upstream) + 2,
            len(self.upstream) + 10, 'Bar', 'static', -1)
        self.fragment.annotate(
            len(self.upstream) + len(self.front_bs) + 1,
            len(self.upstream) + len(self.front_bs) + len(self.middle), 'Foo',
            'changed', 1)

        r = find_swap_region_with_annotations(self.genome, cassette,
                                              self.arm_len)
        self.assertEquals(len(r), 1)
        self.assertEquals(len(r[0].cassette_annotations), 2)

        a = r[0].cassette_annotations[0]
        self.assertEquals(a['base_first'], 2)
        self.assertEquals(a['base_last'], 10)
        self.assertEquals(a['feature_name'], 'Bar')
        self.assertEquals(a['feature_type'], 'static')
        self.assertEquals(a['feature_strand'], -1)

        a = r[0].cassette_annotations[1]
        self.assertEquals(a['base_first'], len(self.front_bs) + 1)
        self.assertEquals(a['base_last'],
                          len(self.front_bs) + len(self.middle) - 1)
        self.assertEquals(a['feature_name'], 'Foo -14G')
        self.assertEquals(a['feature_type'], 'changed')
        self.assertEquals(a['feature_strand'], 1)
예제 #3
0
    def test_does_not_preserve_annotation_if_replaced_is_different(self):
        replaced = "aaaaaaaaaaaaaaaaaaa"
        cassette = ''.join([self.front_bs, replaced, self.back_bs])

        self.fragment.annotate(len(self.upstream)+len(self.front_bs),
                               len(self.upstream)+len(self.front_bs)+len(self.middle)-1,
                               'Foo', 'gene', 1)

        r = find_swap_region_with_annotations(self.genome, cassette, self.arm_len)
        self.assertEquals(len(r), 1)
        self.assertEquals(len(r[0].cassette_annotations), 0)
예제 #4
0
    def test_does_not_preserve_annotation_if_replaced_is_different(self):
        replaced = "aaaaaaaaaaaaaaaaaaa"
        cassette = ''.join([self.front_bs, replaced, self.back_bs])

        self.fragment.annotate(
            len(self.upstream) + len(self.front_bs),
            len(self.upstream) + len(self.front_bs) + len(self.middle) - 1,
            'Foo', 'gene', 1)

        r = find_swap_region_with_annotations(self.genome, cassette,
                                              self.arm_len)
        self.assertEquals(len(r), 1)
        self.assertEquals(len(r[0].cassette_annotations), 0)
예제 #5
0
    def test_detects_deletion(self):
        replaced = self.middle[0:10]+self.middle[11:]
        cassette = ''.join([self.front_bs, replaced, self.back_bs])

        self.fragment.annotate(len(self.upstream)+len(self.front_bs)+1,
                               len(self.upstream)+len(self.front_bs)+len(self.middle),
                               'Foo', 'gene', 1)

        r = find_swap_region_with_annotations(self.genome, cassette, self.arm_len)
        self.assertEquals(len(r), 1)
        self.assertEquals(len(r[0].cassette_annotations), 1)
        a = r[0].cassette_annotations[0]
        self.assertEquals(a['base_first'], len(self.front_bs)+1)
        self.assertEquals(a['base_last'], len(self.front_bs)+len(self.middle)-1)
        self.assertEquals(a['feature_name'], 'Foo -11A')
예제 #6
0
    def test_preserves_annotation_with_single_mutation(self):
        replaced = [c for c in self.middle]
        self.assertEquals(replaced[10], 'a')
        replaced[10] = 'c'
        replaced = ''.join(replaced)
        cassette = ''.join([self.front_bs, replaced, self.back_bs])

        self.fragment.annotate(len(self.upstream)+len(self.front_bs)+1,
                               len(self.upstream)+len(self.front_bs)+len(self.middle),
                               'Foo', 'gene', 1)

        r = find_swap_region_with_annotations(self.genome, cassette, self.arm_len)
        self.assertEquals(len(r), 1)
        self.assertEquals(len(r[0].cassette_annotations), 1)
        a = r[0].cassette_annotations[0]
        self.assertEquals(a['base_first'], len(self.front_bs)+1)
        self.assertEquals(a['base_last'], len(self.front_bs)+len(self.middle))
        self.assertEquals(a['feature_name'], 'Foo A11C')
예제 #7
0
    def test_returns_new_orf(self):
        replaced = 'atgatcatcatcatcatcatcatcatcatcatcatcatcatcatcatctag'
        cassette = ''.join([self.front_bs, replaced, self.back_bs])

        self.fragment.annotate(len(self.upstream)+len(self.front_bs)+1,
                               len(self.upstream)+len(self.front_bs)+len(self.middle),
                               'Foo', 'gene', 1)

        r = find_swap_region_with_annotations(self.genome, cassette, self.arm_len)
        self.assertEquals(len(r), 1)
        self.assertEquals(len(r[0].cassette_annotations), 1)

        a = r[0].cassette_annotations[0]
        self.assertEquals(a['base_first'], len(self.front_bs)+1)
        self.assertEquals(a['base_last'], len(self.front_bs)+len(replaced))
        self.assertEquals(a['feature_name'], 'ORF frame 1')
        self.assertEquals(a['feature_type'], 'ORF')
        self.assertEquals(a['feature_strand'], 1)
예제 #8
0
    def test_preserves_unchanged_annotation(self):
        replaced = self.middle[0:10] + self.middle[11:]
        cassette = ''.join([self.front_bs, replaced, self.back_bs])

        self.fragment.annotate(
            len(self.upstream) + len(self.front_bs) + 12,
            len(self.upstream) + len(self.front_bs) + len(self.middle) - 1,
            'Foo', 'gene', 1)

        r = find_swap_region_with_annotations(self.genome, cassette,
                                              self.arm_len)
        self.assertEquals(len(r), 1)
        self.assertEquals(len(r[0].cassette_annotations), 1)
        a = r[0].cassette_annotations[0]
        self.assertEquals(a['base_first'], len(self.front_bs) + 12 - 1)
        self.assertEquals(a['base_last'],
                          len(self.front_bs) + len(self.middle) - 1 - 1)
        self.assertEquals(a['feature_name'], 'Foo')
예제 #9
0
    def test_detects_deletion(self):
        replaced = self.middle[0:13] + self.middle[14:]
        cassette = ''.join([self.front_bs, replaced, self.back_bs])

        self.fragment.annotate(
            len(self.upstream) + len(self.front_bs) + 1,
            len(self.upstream) + len(self.front_bs) + len(self.middle), 'Foo',
            'gene', 1)

        r = find_swap_region_with_annotations(self.genome, cassette,
                                              self.arm_len)
        self.assertEquals(len(r), 1)
        self.assertEquals(len(r[0].cassette_annotations), 1)
        a = r[0].cassette_annotations[0]
        self.assertEquals(a['base_first'], len(self.front_bs) + 1)
        self.assertEquals(a['base_last'],
                          len(self.front_bs) + len(self.middle) - 1)
        self.assertEquals(a['feature_name'], 'Foo -14G')
예제 #10
0
    def test_returns_new_orf(self):
        replaced = 'atgatcatcatcatcatcatcatcatcatcatcatcatcatcatcatctag'
        cassette = ''.join([self.front_bs, replaced, self.back_bs])

        self.fragment.annotate(
            len(self.upstream) + len(self.front_bs) + 1,
            len(self.upstream) + len(self.front_bs) + len(self.middle), 'Foo',
            'gene', 1)

        r = find_swap_region_with_annotations(self.genome, cassette,
                                              self.arm_len)
        self.assertEquals(len(r), 1)
        self.assertEquals(len(r[0].cassette_annotations), 1)

        a = r[0].cassette_annotations[0]
        self.assertEquals(a['base_first'], len(self.front_bs) + 1)
        self.assertEquals(a['base_last'], len(self.front_bs) + len(replaced))
        self.assertEquals(a['feature_name'], 'ORF frame 1')
        self.assertEquals(a['feature_type'], 'ORF')
        self.assertEquals(a['feature_strand'], 1)
예제 #11
0
    def test_preserves_feature_direction_and_type(self):
        replaced = self.middle[0:10] + self.middle[11:]
        cassette = ''.join([self.front_bs, replaced, self.back_bs])

        self.fragment.annotate(
            len(self.upstream) + len(self.front_bs) + 1,
            len(self.upstream) + len(self.front_bs) + len(self.middle), 'Foo',
            'foobar', -1)

        r = find_swap_region_with_annotations(self.genome, cassette,
                                              self.arm_len)
        self.assertEquals(len(r), 1)
        self.assertEquals(len(r[0].cassette_annotations), 1)
        a = r[0].cassette_annotations[0]
        self.assertEquals(a['base_first'], len(self.front_bs) + 1)
        self.assertEquals(a['base_last'],
                          len(self.front_bs) + len(self.middle) - 1)
        self.assertEquals(a['feature_name'], 'Foo -11A')
        self.assertEquals(a['feature_type'], 'foobar')
        self.assertEquals(a['feature_strand'], -1)
예제 #12
0
    def test_preserves_annotation_with_single_mutation(self):
        replaced = [c for c in self.middle]
        self.assertEquals(replaced[10], 'a')
        replaced[10] = 'c'
        replaced = ''.join(replaced)
        cassette = ''.join([self.front_bs, replaced, self.back_bs])

        self.fragment.annotate(
            len(self.upstream) + len(self.front_bs) + 1,
            len(self.upstream) + len(self.front_bs) + len(self.middle), 'Foo',
            'gene', 1)

        r = find_swap_region_with_annotations(self.genome, cassette,
                                              self.arm_len)
        self.assertEquals(len(r), 1)
        self.assertEquals(len(r[0].cassette_annotations), 1)
        a = r[0].cassette_annotations[0]
        self.assertEquals(a['base_first'], len(self.front_bs) + 1)
        self.assertEquals(a['base_last'],
                          len(self.front_bs) + len(self.middle))
        self.assertEquals(a['feature_name'], 'Foo A11C')