Пример #1
0
    def test_deletion__overlapping_features(self):
        # Example based on intersection of nei and arbB genes in MG1655.
        before_overlap = 'GCCCTGGCTGCCAGCA'
        overlap = 'CTAG'
        after_overlap = 'GCCGACCGCTTCGG'
        raw_seq_str = before_overlap + overlap + after_overlap
        seq = Seq(raw_seq_str, generic_dna)
        seq_record = SeqRecord(seq)

        feature_1_loc = FeatureLocation(0,
                                        len(before_overlap) + len(overlap),
                                        strand=1)
        feature_1 = SeqFeature(feature_1_loc, type='CDS', id='1')
        seq_record.features.append(feature_1)

        feature_2_loc = FeatureLocation(len(before_overlap),
                                        len(raw_seq_str),
                                        strand=1)
        feature_2 = SeqFeature(feature_2_loc, type='CDS', id='2')
        seq_record.features.append(feature_2)

        maker = VCFToGenbankMaker(seq_record, None, None)
        maker._update_genome_record_for_variant(len(before_overlap), overlap,
                                                '')

        # Assert the sequence is correct.
        EXPECTED_SEQ = before_overlap + after_overlap
        self.assertEqual(EXPECTED_SEQ, str(seq_record.seq))

        # Assert the feature annotations are still correct.
        EXPECTED_FEATURE_1_SEQ = before_overlap
        self.assertEqual(EXPECTED_FEATURE_1_SEQ,
                         str(feature_1.extract(seq_record.seq)))

        EXPECTED_FEATURE_2_SEQ = after_overlap
        self.assertEqual(EXPECTED_FEATURE_2_SEQ,
                         str(feature_2.extract(seq_record.seq)))
Пример #2
0
    def test_update_genome_record_for_variant(self):
        """Tests handling a vcf record.
        """
        before_variant = 'AAAAA'
        variant = 'TTTT'
        after_variant = 'CCCCCC'
        variant_replacement = 'GGGGGGG'
        raw_seq_str = before_variant + variant + after_variant
        seq = Seq(raw_seq_str, generic_dna)
        seq_record = SeqRecord(seq)
        maker = VCFToGenbankMaker(seq_record, None, None)

        # Replace the variant
        variant_position = len(before_variant)
        maker._update_genome_record_for_variant(variant_position, variant,
                                                variant_replacement)

        # Assert the sequence is correct.
        EXPECTED_SEQ = before_variant + variant_replacement + after_variant
        self.assertEqual(EXPECTED_SEQ, str(seq_record.seq))

        # Assert the liftover is correct.
        EXPECTED_LIFTOVER_MAPPING_1 = ((0, len(before_variant) - 1),
                                       (0, len(before_variant) - 1))
        EXPECTED_LIFTOVER_MAPPING_2 = ((len(before_variant) + len(variant),
                                        len(raw_seq_str) - 1),
                                       (len(before_variant) +
                                        len(variant_replacement),
                                        (len(before_variant) +
                                         len(variant_replacement) +
                                         len(after_variant) - 1)))
        EXPECTED_LIFTOVER = [
            EXPECTED_LIFTOVER_MAPPING_1, EXPECTED_LIFTOVER_MAPPING_2
        ]
        self.assertEqual(EXPECTED_LIFTOVER,
                         maker.runtime_liftover._interval_mapping)