Esempio n. 1
0
 def _onp_ordered_combiner_test(self, inputs, expected):
     input_muts = iter(self._tuples_to_MutationData(inputs))
     expected_muts = self._tuples_to_MutationData(expected)
     mut_factory = MutationDataFactory()
     combiner = OnpQueue(input_muts, mut_factory)
     results = list(combiner.get_combined_mutations())
     self._assert_mutation_lists_equal(expected_muts, results)
Esempio n. 2
0
 def _onp_ordered_combiner_test(self,inputs, expected):
     input_muts = iter(self._tuples_to_MutationData(inputs))
     expected_muts = self._tuples_to_MutationData(expected)
     mut_factory = MutationDataFactory()
     combiner = OnpQueue(input_muts, mut_factory)
     results = list(combiner.get_combined_mutations())
     self._assert_mutation_lists_equal(expected_muts, results)
Esempio n. 3
0
    def test_tnp_blank_snp(self):
        """Test a harder scenario for ONP combination"""
        mut1 = MutationData(chr=1,start=100, end=100, ref_allele="G", alt_allele="A")
        mut1.createAnnotation("phasing_id", "value1", "INPUT")
        mut1.createAnnotation("phasing_genotype", "0|1", "INPUT")

        mut2 = MutationData(chr=1,start=101, end=101, ref_allele="C", alt_allele="T")
        mut2.createAnnotation("phasing_id", "value1", "INPUT")
        mut2.createAnnotation("phasing_genotype", "0|1", "INPUT")

        mut3 = MutationData(chr=1,start=102, end=102, ref_allele="C", alt_allele="T")
        mut3.createAnnotation("phasing_id", "value1", "INPUT")
        mut3.createAnnotation("phasing_genotype", "0|1", "INPUT")

        # Note the differing ID in mut4
        mut4 = MutationData(chr=1,start=103, end=103, ref_allele="C", alt_allele="T")
        mut4.createAnnotation("phasing_id", "value2", "INPUT")
        mut4.createAnnotation("phasing_genotype", "0|1", "INPUT")

        mut5 = MutationData(chr=1,start=104, end=104, ref_allele="C", alt_allele="T")
        mut5.createAnnotation("phasing_id", "value1", "INPUT")
        mut5.createAnnotation("phasing_genotype", "0|1", "INPUT")

        # Note separate chromosome for mut6
        mut6 = MutationData(chr=2,start=105, end=105, ref_allele="C", alt_allele="T")
        mut6.createAnnotation("phasing_id", "value1", "INPUT")
        mut6.createAnnotation("phasing_genotype", "0|1", "INPUT")

        gt_alts = ["ATT", "T", "T", "T"]
        mutations = [mut1, mut2, mut3, mut4, mut5, mut6]
        mdf = MutationDataFactory()
        queue = OnpQueue(mutations, mdf)

        for i, mut in enumerate(queue.get_combined_mutations()):
            self.assertTrue(gt_alts[i] == mut.alt_allele)
Esempio n. 4
0
    def test_indel(self):
        """Test indel not used in onp combination no matter what the phasing info"""
        mut1 = MutationData(chr=1,start=100, end=100, ref_allele="G", alt_allele="A")
        mut1.createAnnotation("phasing_id", "value1", "INPUT")
        mut1.createAnnotation("phasing_genotype", "0|1", "INPUT")

        mut2 = MutationData(chr=1,start=101, end=101, ref_allele="C", alt_allele="T")
        mut2.createAnnotation("phasing_id", "value1", "INPUT")
        mut2.createAnnotation("phasing_genotype", "0|1", "INPUT")

        mut3 = MutationData(chr=1,start=102, end=102, ref_allele="C", alt_allele="T")
        mut3.createAnnotation("phasing_id", "value1", "INPUT")
        mut3.createAnnotation("phasing_genotype", "0|1", "INPUT")

        # Indel
        mut4 = MutationData(chr=1,start=103, end=104, ref_allele="-", alt_allele="TT")
        mut4.createAnnotation("phasing_id", "value1", "INPUT")
        mut4.createAnnotation("phasing_genotype", "0|1", "INPUT")

        mut5 = MutationData(chr=1, start=104, end=104, ref_allele="C", alt_allele="T")
        mut5.createAnnotation("phasing_id", "value1", "INPUT")
        mut5.createAnnotation("phasing_genotype", "0|1", "INPUT")

        mut6 = MutationData(chr=1, start=105, end=105, ref_allele="C", alt_allele="T")
        mut6.createAnnotation("phasing_id", "value1", "INPUT")
        mut6.createAnnotation("phasing_genotype", "0|1", "INPUT")

        gt_alts = ["ATT", "TT", "TT"]
        mutations = [mut1, mut2, mut3, mut4, mut5, mut6]
        mdf = MutationDataFactory()
        queue = OnpQueue(mutations, mdf)

        for i, mut in enumerate(queue.get_combined_mutations()):
            self.assertTrue(gt_alts[i] == mut.alt_allele)
Esempio n. 5
0
    def test_tnp_blank_snp(self):
        """Test a harder scenario for ONP combination"""
        mut1 = MutationData(chr=1,
                            start=100,
                            end=100,
                            ref_allele="G",
                            alt_allele="A")
        mut1.createAnnotation("phasing_id", "value1", "INPUT")
        mut1.createAnnotation("phasing_genotype", "0|1", "INPUT")

        mut2 = MutationData(chr=1,
                            start=101,
                            end=101,
                            ref_allele="C",
                            alt_allele="T")
        mut2.createAnnotation("phasing_id", "value1", "INPUT")
        mut2.createAnnotation("phasing_genotype", "0|1", "INPUT")

        mut3 = MutationData(chr=1,
                            start=102,
                            end=102,
                            ref_allele="C",
                            alt_allele="T")
        mut3.createAnnotation("phasing_id", "value1", "INPUT")
        mut3.createAnnotation("phasing_genotype", "0|1", "INPUT")

        # Note the differing ID in mut4
        mut4 = MutationData(chr=1,
                            start=103,
                            end=103,
                            ref_allele="C",
                            alt_allele="T")
        mut4.createAnnotation("phasing_id", "value2", "INPUT")
        mut4.createAnnotation("phasing_genotype", "0|1", "INPUT")

        mut5 = MutationData(chr=1,
                            start=104,
                            end=104,
                            ref_allele="C",
                            alt_allele="T")
        mut5.createAnnotation("phasing_id", "value1", "INPUT")
        mut5.createAnnotation("phasing_genotype", "0|1", "INPUT")

        # Note separate chromosome for mut6
        mut6 = MutationData(chr=2,
                            start=105,
                            end=105,
                            ref_allele="C",
                            alt_allele="T")
        mut6.createAnnotation("phasing_id", "value1", "INPUT")
        mut6.createAnnotation("phasing_genotype", "0|1", "INPUT")

        gt_alts = ["ATT", "T", "T", "T"]
        mutations = [mut1, mut2, mut3, mut4, mut5, mut6]
        mdf = MutationDataFactory()
        queue = OnpQueue(mutations, mdf)

        for i, mut in enumerate(queue.get_combined_mutations()):
            self.assertTrue(gt_alts[i] == mut.alt_allele)
Esempio n. 6
0
 def _onp_unordered_combiner_test(self,inputs, expected):
     """Convert input and expected tuples into MutationData objects, then run the inputs through the ONP combiner on
     the inputs and compare to the expected"""
     input_muts = iter(self._tuples_to_MutationData(inputs))
     expected = self._tuples_to_MutationData(expected)
     combiner = OnpQueue(input_muts)
     results = list(combiner.get_combined_mutations())
     self.assert_mutations_match_expected(expected, results)
Esempio n. 7
0
    def test_indel(self):
        """Test indel not used in onp combination no matter what the phasing info"""
        mut1 = MutationData(chr=1,
                            start=100,
                            end=100,
                            ref_allele="G",
                            alt_allele="A")
        mut1.createAnnotation("phasing_id", "value1", "INPUT")
        mut1.createAnnotation("phasing_genotype", "0|1", "INPUT")

        mut2 = MutationData(chr=1,
                            start=101,
                            end=101,
                            ref_allele="C",
                            alt_allele="T")
        mut2.createAnnotation("phasing_id", "value1", "INPUT")
        mut2.createAnnotation("phasing_genotype", "0|1", "INPUT")

        mut3 = MutationData(chr=1,
                            start=102,
                            end=102,
                            ref_allele="C",
                            alt_allele="T")
        mut3.createAnnotation("phasing_id", "value1", "INPUT")
        mut3.createAnnotation("phasing_genotype", "0|1", "INPUT")

        # Indel
        mut4 = MutationData(chr=1,
                            start=103,
                            end=104,
                            ref_allele="-",
                            alt_allele="TT")
        mut4.createAnnotation("phasing_id", "value1", "INPUT")
        mut4.createAnnotation("phasing_genotype", "0|1", "INPUT")

        mut5 = MutationData(chr=1,
                            start=104,
                            end=104,
                            ref_allele="C",
                            alt_allele="T")
        mut5.createAnnotation("phasing_id", "value1", "INPUT")
        mut5.createAnnotation("phasing_genotype", "0|1", "INPUT")

        mut6 = MutationData(chr=1,
                            start=105,
                            end=105,
                            ref_allele="C",
                            alt_allele="T")
        mut6.createAnnotation("phasing_id", "value1", "INPUT")
        mut6.createAnnotation("phasing_genotype", "0|1", "INPUT")

        gt_alts = ["ATT", "TT", "TT"]
        mutations = [mut1, mut2, mut3, mut4, mut5, mut6]
        mdf = MutationDataFactory()
        queue = OnpQueue(mutations, mdf)

        for i, mut in enumerate(queue.get_combined_mutations()):
            self.assertTrue(gt_alts[i] == mut.alt_allele)
Esempio n. 8
0
 def _onp_unordered_combiner_test(self,inputs, expected):
     """Convert input and expected tuples into MutationData objects, then run the inputs through the ONP combiner on
     the inputs and compare to the expected"""
     input_muts = iter(self._tuples_to_MutationData(inputs))
     expected = self._tuples_to_MutationData(expected)
     mdf = MutationDataFactory()
     combiner = OnpQueue(input_muts, mdf)
     results = list(combiner.get_combined_mutations())
     self.assert_mutations_match_expected(expected, results)
Esempio n. 9
0
    def test_mutation_combiner_identical_annotation(self):
        """Test that annotations with all identical values are not repeated with | between them"""
        mut1 = MutationDataFactory.default_create(chr=1,
                                                  start=100,
                                                  end=100,
                                                  ref_allele="G",
                                                  alt_allele="A")
        mut1.createAnnotation("SampleName", "John Doe")

        mut2 = MutationDataFactory.default_create(chr=1,
                                                  start=101,
                                                  end=101,
                                                  ref_allele="C",
                                                  alt_allele="T")
        mut2.createAnnotation("SampleName", "John Doe")

        mdf = MutationDataFactory()
        result = OnpQueue._combine_mutations([mut1, mut2], mdf)

        expected = MutationDataFactory.default_create(chr=1,
                                                      start=100,
                                                      end=101,
                                                      ref_allele="GC",
                                                      alt_allele="AT")
        expected.createAnnotation("SampleName", "John Doe")
        self.assertTrue(result.attributesEqual(expected))
        self.assertEqual(result, expected)
Esempio n. 10
0
    def test_mutation_combiner_ordering(self):
        """Test that ordering of combined attributes makes matches original order"""
        mut1 = MutationDataFactory.default_create(chr=1,
                                                  start=100,
                                                  end=100,
                                                  ref_allele="G",
                                                  alt_allele="A")
        mut1.createAnnotation("SomeDepth", "2")
        mut1.createAnnotation("AnotherDepth", "1")

        mut2 = MutationDataFactory.default_create(chr=1,
                                                  start=101,
                                                  end=101,
                                                  ref_allele="C",
                                                  alt_allele="T")
        mut2.createAnnotation("SomeDepth", "1")
        mut2.createAnnotation("AnotherDepth", "2")

        mdf = MutationDataFactory()
        result = OnpQueue._combine_mutations([mut1, mut2], mdf)

        expected = MutationDataFactory.default_create(chr=1,
                                                      start=100,
                                                      end=101,
                                                      ref_allele="GC",
                                                      alt_allele="AT")
        expected.createAnnotation("SomeDepth", "2|1")
        expected.createAnnotation("AnotherDepth", "1|2")
        self.assertTrue(result.attributesEqual(expected))
        self.assertEqual(result, expected)
Esempio n. 11
0
    def test_mutation_combiner(self):
        """Test that attributes and annotations are set properly with combine mutations"""
        mut1 = MutationDataFactory.default_create(chr=1,
                                                  start=100,
                                                  end=100,
                                                  ref_allele="G",
                                                  alt_allele="A")
        mut1.createAnnotation("SomeValue", "value1", "INPUT", "STRING",
                              "a value")
        mut2 = MutationDataFactory.default_create(chr=1,
                                                  start=101,
                                                  end=101,
                                                  ref_allele="C",
                                                  alt_allele="T")
        mut2.createAnnotation("SomeValue", "value2", tags=["IT"])
        mut2.createAnnotation("AnotherValue", "5")
        mdf = MutationDataFactory()
        result = OnpQueue._combine_mutations([mut1, mut2], mdf)

        expected = MutationDataFactory.default_create(chr=1,
                                                      start=100,
                                                      end=101,
                                                      ref_allele="GC",
                                                      alt_allele="AT")
        expected.createAnnotation("SomeValue",
                                  "value1|value2",
                                  "INPUT",
                                  "STRING",
                                  "a value",
                                  tags=["IT"])
        expected.createAnnotation("AnotherValue", "5")
        self.assertTrue(result.attributesEqual(expected))
        self.assertEqual(result, expected)
Esempio n. 12
0
    def test_mutation_combiner(self):
        """Test that attributes and annotations are set properly with combine mutations"""
        mut1 = MutationDataFactory.default_create(chr=1,start=100, end=100, ref_allele="G", alt_allele="A")
        mut1.createAnnotation("SomeValue", "value1", "INPUT", "STRING", "a value")
        mut2 = MutationDataFactory.default_create(chr=1,start=101, end=101, ref_allele="C", alt_allele="T")
        mut2.createAnnotation("SomeValue", "value2", tags=["IT"])
        mut2.createAnnotation("AnotherValue","5")
        mdf = MutationDataFactory()
        result = OnpQueue._combine_mutations([mut1, mut2], mdf)

        expected = MutationDataFactory.default_create(chr=1, start=100, end=101, ref_allele="GC", alt_allele="AT")
        expected.createAnnotation("SomeValue", "value1|value2", "INPUT", "STRING", "a value", tags=["IT"])
        expected.createAnnotation("AnotherValue", "5")
        self.assertTrue(result.attributesEqual(expected))
        self.assertEqual(result, expected)
Esempio n. 13
0
    def test_mutation_combiner_identical_annotation(self):
        """Test that annotations with all identical values are not repeated with | between them"""
        mut1 = MutationDataFactory.default_create(chr=1,start=100, end=100, ref_allele="G", alt_allele="A")
        mut1.createAnnotation("SampleName", "John Doe")

        mut2 = MutationDataFactory.default_create(chr=1,start=101, end=101, ref_allele="C", alt_allele="T")
        mut2.createAnnotation("SampleName", "John Doe" )

        mdf = MutationDataFactory()
        result = OnpQueue._combine_mutations([mut1, mut2], mdf)

        expected = MutationDataFactory.default_create(chr=1, start=100, end=101, ref_allele="GC", alt_allele="AT")
        expected.createAnnotation("SampleName", "John Doe")
        self.assertTrue(result.attributesEqual(expected))
        self.assertEqual(result, expected)
Esempio n. 14
0
    def test_mutation_combiner_ordering(self):
        """Test that ordering of combined attributes makes matches original order"""
        mut1 = MutationDataFactory.default_create(chr=1,start=100, end=100, ref_allele="G", alt_allele="A")
        mut1.createAnnotation("SomeDepth", "2")
        mut1.createAnnotation("AnotherDepth", "1")

        mut2 = MutationDataFactory.default_create(chr=1,start=101, end=101, ref_allele="C", alt_allele="T")
        mut2.createAnnotation("SomeDepth", "1" )
        mut2.createAnnotation("AnotherDepth", "2")

        mdf = MutationDataFactory()
        result = OnpQueue._combine_mutations([mut1, mut2], mdf)

        expected = MutationDataFactory.default_create(chr=1, start=100, end=101, ref_allele="GC", alt_allele="AT")
        expected.createAnnotation("SomeDepth", "2|1")
        expected.createAnnotation("AnotherDepth","1|2")
        self.assertTrue(result.attributesEqual(expected))
        self.assertEqual(result, expected)
Esempio n. 15
0
    def createMutations(self):
        mutations = self.input_creator.createMutations()
        queue = OnpQueue(mutations)

        for mut in queue.get_combined_mutations():
            yield mut
Esempio n. 16
0
 def test_mutation_combiner_no_mut(self):
     """Combining no mutations should return None"""
     mdf = MutationDataFactory()
     result = OnpQueue._combine_mutations([], mdf)
     self.assertIsNone(result)
Esempio n. 17
0
 def test_mutation_combiner_no_mut(self):
     """Combining no mutations should return None"""
     mdf = MutationDataFactory()
     result = OnpQueue._combine_mutations([], mdf)
     self.assertIsNone(result)
Esempio n. 18
0
 def test_mutation_combiner_no_mut(self):
     """Combining no mutations should return None"""
     result = OnpQueue._combine_mutations([])
     self.assertIsNone(result)
Esempio n. 19
0
    def createMutations(self):
        mutations = self.input_creator.createMutations()
        queue = OnpQueue(mutations, self._mutation_data_factory)

        for mut in queue.get_combined_mutations():
            yield mut