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)
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)
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)
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)
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')
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')
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)
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')
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')
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)
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)
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')