Ejemplo n.º 1
0
    def test_add_array_gap(self):
        from multicov.binary import BinaryAlignment
        from multicov.alphabet import dna_alphabet, rna_alphabet
        bin_align = BinaryAlignment(
            [[0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1],
             [0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1],
             [0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0]],
            dna_alphabet,
            include_gaps=True)
        bin_align.add(
            [[0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1],
             [0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1],
             [0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0]],
            rna_alphabet)

        self.assertSequenceEqual(bin_align.alphabets, [(dna_alphabet, 4),
                                                       (rna_alphabet, 4)])
        self.assertTrue(
            np.array_equal(
                bin_align.data.todense(),
                np.asmatrix([[
                    0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1,
                    0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1
                ],
                             [
                                 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0,
                                 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0,
                                 0, 1, 0, 0, 0, 0, 0, 0, 0, 1
                             ],
                             [
                                 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0,
                                 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0,
                                 1, 0, 0, 0, 0, 0, 1, 0, 0, 0
                             ]])))
Ejemplo n.º 2
0
 def test_copy(self):
     from multicov.binary import BinaryAlignment
     from multicov.alphabet import dna_alphabet
     bin_align1 = BinaryAlignment(
         [[1, 0, 0, 0, 1, 0, 0, 0], [0, 0, 0, 1, 0, 0, 0, 0],
          [0, 1, 0, 0, 0, 0, 1, 0], [0, 0, 0, 1, 0, 0, 0, 1]], dna_alphabet)
     bin_align2 = BinaryAlignment(bin_align1)
     self.assertIsNot(bin_align1, bin_align2)
     self.assertEqual(bin_align1, bin_align2)
Ejemplo n.º 3
0
 def test_set_default_reference_on_empty(self):
     from multicov.binary import BinaryAlignment
     from multicov.alignment import ReferenceMapping
     from multicov.alphabet import rna_alphabet
     bin_align = BinaryAlignment()
     bin_align.add([[0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1],
                    [0, 1, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1]],
                   rna_alphabet)
     self.assertEqual(bin_align.reference, ReferenceMapping(list(range(4))))
Ejemplo n.º 4
0
 def test_deep_copy_data(self):
     from multicov.binary import BinaryAlignment
     from multicov.alphabet import NumericAlphabet
     bin_align1 = BinaryAlignment(
         [[0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1],
          [0, 1, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1]],
         NumericAlphabet(5))
     bin_align2 = BinaryAlignment(bin_align1)
     self.assertIsNot(bin_align1.data, bin_align2.data)
Ejemplo n.º 5
0
 def test_add_to_empty(self):
     from multicov.binary import BinaryAlignment
     from multicov.alphabet import dna_alphabet
     bin_align1 = BinaryAlignment(
         [[0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1],
          [0, 1, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1]], dna_alphabet)
     bin_align2 = BinaryAlignment()
     bin_align2.add(bin_align1)
     self.assertEqual(bin_align1, bin_align2)
Ejemplo n.º 6
0
 def test_unequal_different_alphabets(self):
     from multicov.binary import BinaryAlignment
     from multicov.alphabet import rna_alphabet, dna_alphabet
     bin_data = [[0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1],
                 [0, 1, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1]]
     bin_align1 = BinaryAlignment(bin_data, dna_alphabet)
     bin_align2 = BinaryAlignment(bin_data, rna_alphabet)
     self.assertFalse(bin_align1 == bin_align2)
     self.assertTrue(bin_align1 != bin_align2)
Ejemplo n.º 7
0
 def test_exclude_gaps(self):
     from multicov.alignment import Alignment
     from multicov.binary import BinaryAlignment
     from multicov.alphabet import rna_alphabet
     align = Alignment(['ACA', 'GUA', '-A-'], alphabet=rna_alphabet)
     bin_align1 = BinaryAlignment.from_alignment(align)
     bin_align2 = BinaryAlignment.from_alignment(align, include_gaps=True)
     bin_align2.remove_gap_positions()
     self.assertEqual(bin_align1, bin_align2)
Ejemplo n.º 8
0
 def test_rna_example(self):
     from multicov.alignment import Alignment
     from multicov.binary import BinaryAlignment
     from multicov.alphabet import rna_alphabet
     align = Alignment(['ACA', 'GUA', '-A-'], alphabet=rna_alphabet)
     bin_align = BinaryAlignment.from_alignment(align)
     expected = BinaryAlignment([[1, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0],
                                 [0, 0, 1, 0, 0, 0, 0, 1, 1, 0, 0, 0],
                                 [0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0]],
                                rna_alphabet)
     self.assertEqual(bin_align, expected)
Ejemplo n.º 9
0
 def test_equal_self_multi_alpha(self):
     from multicov.binary import BinaryAlignment
     from multicov.alphabet import rna_alphabet, dna_alphabet
     bin_align = BinaryAlignment(
         [[0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1],
          [0, 1, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1]], dna_alphabet)
     bin_align.add([[0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1],
                    [0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0]],
                   rna_alphabet)
     self.assertTrue(bin_align == bin_align)
     self.assertFalse(bin_align != bin_align)
Ejemplo n.º 10
0
 def test_return_self(self):
     from multicov.binary import BinaryAlignment
     from multicov.alphabet import dna_alphabet, rna_alphabet
     bin_align = BinaryAlignment(
         [[0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1],
          [0, 1, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1],
          [1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0]], dna_alphabet)
     ret_align = bin_align.add(
         [[0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1],
          [0, 1, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1],
          [1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0]], rna_alphabet)
     self.assertIs(bin_align, ret_align)
Ejemplo n.º 11
0
    def test_include_gaps(self):
        from multicov.alignment import Alignment, ReferenceMapping
        from multicov.alphabet import rna_alphabet, NumericAlphabet
        from multicov.binary import BinaryAlignment
        align1 = Alignment(['ACA', 'GUA', '-A-'], alphabet=rna_alphabet)
        align2 = Alignment([[2, 3], [0, 4], [1, 3]],
                           alphabet=NumericAlphabet(5, has_gap=False))

        align = Alignment(align1).add(align2)
        align.reference = ReferenceMapping((list(range(1, 4)), list(range(2))))
        align.annotations['seqw'] = [0.5, 1.5, 0.2]

        bin_align = BinaryAlignment.from_alignment(align)
        bin_align.add_gap_positions()

        expected1 = np.asmatrix([[0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0],
                                 [0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0],
                                 [1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0,
                                  0]])
        #                         0  1  2  3  4
        expected2 = np.asmatrix([[0, 0, 1, 0, 0, 0, 0, 0, 1, 0],
                                 [1, 0, 0, 0, 0, 0, 0, 0, 0, 1],
                                 [0, 1, 0, 0, 0, 0, 0, 0, 1, 0]])

        self.assertTrue(bin_align.include_gaps)
        self.assertSequenceEqual(bin_align.alphabets,
                                 [(rna_alphabet, 3),
                                  (NumericAlphabet(5, has_gap=False), 2)])
        self.assertTrue(
            np.array_equal(bin_align.data.todense(),
                           np.hstack((expected1, expected2))))
        self.assertIs(bin_align.reference, align.reference)
        self.assertIs(bin_align.annotations, align.annotations)
Ejemplo n.º 12
0
 def test_nonempty(self):
     from multicov.binary import BinaryAlignment
     from multicov.alphabet import dna_alphabet
     bin_align = BinaryAlignment(
         [[0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1],
          [0, 1, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1]], dna_alphabet)
     self.assertEqual(len(bin_align), 2)
Ejemplo n.º 13
0
 def test_get_str_goes_to_annotations(self):
     from multicov.alignment import Alignment
     from multicov.binary import BinaryAlignment
     from multicov.alphabet import rna_alphabet
     align = Alignment(['ACA', 'GUA', '-A-'], alphabet=rna_alphabet)
     bin_align = BinaryAlignment.from_alignment(align)
     self.assertIs(bin_align['seqw'], bin_align.annotations['seqw'])
Ejemplo n.º 14
0
 def test_rna_roundtrip(self):
     from multicov.alignment import Alignment
     from multicov.binary import BinaryAlignment
     from multicov.alphabet import rna_alphabet
     align = Alignment(['ACA', 'GUA', '-A-'], alphabet=rna_alphabet)
     bin_align = BinaryAlignment.from_alignment(align)
     align_again = bin_align.to_alignment()
     self.assertEqual(align, align_again)
Ejemplo n.º 15
0
 def test_single_alpha_full_map(self):
     from multicov.alignment import Alignment
     from multicov.binary import BinaryAlignment, binary_index_map
     from multicov.alphabet import rna_alphabet
     align = Alignment(['ACA', 'GUA', '-A-'], alphabet=rna_alphabet)
     bin_align = BinaryAlignment.from_alignment(align)
     full_map = binary_index_map(bin_align)
     self.assertTrue(np.array_equal(full_map, [[0, 4], [4, 8], [8, 12]]))
Ejemplo n.º 16
0
 def test_copy_alpha_refmap_and_annotations_by_ref(self):
     from multicov.alignment import Alignment
     from multicov.binary import BinaryAlignment
     from multicov.alphabet import rna_alphabet
     align = Alignment(['ACA', 'GUA', '-A-'], alphabet=rna_alphabet)
     bin_align = BinaryAlignment.from_alignment(align)
     self.assertIs(bin_align.alphabets, align.alphabets)
     self.assertIs(bin_align.reference, align.reference)
     self.assertIs(bin_align.annotations, align.annotations)
Ejemplo n.º 17
0
 def test_initially_one(self):
     from multicov.binary import BinaryAlignment
     from multicov.alphabet import dna_alphabet
     bin_align = BinaryAlignment(
         [[0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1],
          [0, 1, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1],
          [1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0]], dna_alphabet)
     # noinspection PyTypeChecker
     self.assertTrue(np.all(bin_align.annotations['seqw'] == 1))
Ejemplo n.º 18
0
 def test_single_alpha_single_idx(self):
     from multicov.alignment import Alignment
     from multicov.binary import BinaryAlignment, binary_index_map
     from multicov.alphabet import rna_alphabet
     align = Alignment(['ACA', 'GUA', '-A-'], alphabet=rna_alphabet)
     bin_align = BinaryAlignment.from_alignment(align)
     self.assertSequenceEqual(binary_index_map(bin_align, 0), (0, 4))
     self.assertSequenceEqual(binary_index_map(bin_align, 1), (4, 8))
     self.assertSequenceEqual(binary_index_map(bin_align, 2), (8, 12))
Ejemplo n.º 19
0
 def test_empty_vs_not(self):
     from multicov.binary import BinaryAlignment
     from multicov.alphabet import protein_alphabet
     bin_align = BinaryAlignment(
         [[
             0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
             0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
         ],
          [
              0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1,
              0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
          ],
          [
              0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
              1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
          ]], protein_alphabet)
     self.assertFalse(BinaryAlignment() == bin_align)
     self.assertTrue(BinaryAlignment() != bin_align)
Ejemplo n.º 20
0
 def test_set_default_reference(self):
     from multicov.binary import BinaryAlignment
     from multicov.alignment import ReferenceMapping
     from multicov.alphabet import NumericAlphabet
     bin_align = BinaryAlignment(
         [[0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1],
          [0, 1, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1]],
         NumericAlphabet(5))
     self.assertEqual(bin_align.reference, ReferenceMapping(list(range(4))))
Ejemplo n.º 21
0
 def test_make_empty(self):
     from multicov.binary import BinaryAlignment
     bin_align = BinaryAlignment()
     self.assertTrue(hasattr(bin_align, 'alphabets'))
     self.assertTrue(hasattr(bin_align, 'data'))
     self.assertTrue(hasattr(bin_align, 'reference'))
     self.assertTrue(hasattr(bin_align, 'annotations'))
     self.assertEqual(np.size(bin_align.data), 0)
     self.assertEqual(len(bin_align.alphabets), 0)
     self.assertEqual(len(bin_align.reference), 0)
     self.assertEqual(bin_align.include_gaps, False)
Ejemplo n.º 22
0
 def test_raise_on_add_wrong_length(self):
     from multicov.binary import BinaryAlignment
     from multicov.alphabet import protein_alphabet, rna_alphabet
     bin_align = BinaryAlignment(
         [[
             0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
             0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
         ],
          [
              0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1,
              0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
          ],
          [
              0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
              1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
          ]], protein_alphabet)
     with self.assertRaises(ValueError):
         bin_align.add([[0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1],
                        [0, 1, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1]],
                       rna_alphabet)
Ejemplo n.º 23
0
 def test_empty(self):
     from multicov.alignment import Alignment, ReferenceMapping
     from multicov.binary import BinaryAlignment
     bin_align = BinaryAlignment.from_alignment(Alignment())
     self.assertTrue(hasattr(bin_align, 'data'))
     self.assertTrue(hasattr(bin_align, 'alphabets'))
     self.assertTrue(hasattr(bin_align, 'reference'))
     self.assertTrue(hasattr(bin_align, 'annotations'))
     self.assertEqual(np.size(bin_align.data), 0)
     self.assertEqual(np.size(bin_align.alphabets), 0)
     self.assertEqual(bin_align.annotations.size, 0)
     self.assertEqual(bin_align.reference, ReferenceMapping())
Ejemplo n.º 24
0
 def test_changing_copy_leaves_original_unchanged(self):
     from multicov.binary import BinaryAlignment
     from multicov.alphabet import protein_alphabet
     bin_align1 = BinaryAlignment(
         [[
             0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
             0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
         ],
          [
              0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1,
              0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
          ],
          [
              0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
              1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
          ]], protein_alphabet)
     bin_align2 = BinaryAlignment(bin_align1)
     bin_align2.annotations['seqw'] = [1, 2, 3]
     self.assertNotEqual(bin_align1, bin_align2)
     self.assertTrue(
         np.array_equal(bin_align2.annotations['seqw'], [1, 2, 3]))
Ejemplo n.º 25
0
    def test_binalign_object_method(self):
        from multicov.alignment import Alignment
        from multicov.alphabet import protein_alphabet, rna_alphabet
        from multicov.binary import BinaryAlignment
        align1 = Alignment(['ACA', 'GUA', '-A-'], alphabet=rna_alphabet)
        align2 = Alignment(['DF', 'YA', '-C'], alphabet=protein_alphabet)

        align = Alignment(align1).add(align2)
        bin_align = BinaryAlignment.from_alignment(align)

        self.assertSequenceEqual(bin_align.index_map(2), (8, 12))
        self.assertSequenceEqual(bin_align.index_map(3), (12, 32))
Ejemplo n.º 26
0
 def test_raise_on_add_wrong_width(self):
     from multicov.binary import BinaryAlignment
     from multicov.alphabet import protein_alphabet, rna_alphabet
     bin_align = BinaryAlignment(
         [[
             0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
             0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
         ],
          [
              0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1,
              0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
          ],
          [
              0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
              1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
          ]], protein_alphabet)
     data = np.asmatrix([[0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1],
                         [0, 1, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1],
                         [0, 1, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1]])
     # don't raise on properly-sized data
     try:
         bin_align.add(data, rna_alphabet)
     except ValueError:
         self.fail(
             "BinaryAlignment.add() raised ValueError on properly-sized data."
         )
     # raised on improperly-sized
     with self.assertRaises(ValueError):
         bin_align.add(data[:, :-1], rna_alphabet)
Ejemplo n.º 27
0
 def test_set_default_reference_on_nonempty(self):
     from multicov.binary import BinaryAlignment
     from multicov.alphabet import protein_alphabet, dna_alphabet
     bin_align = BinaryAlignment(
         [[
             0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
             0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
         ],
          [
              0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1,
              0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
          ],
          [
              0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
              1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
          ]], protein_alphabet)
     bin_align.add([[0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1],
                    [0, 1, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1],
                    [1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0]],
                   dna_alphabet)
     self.assertEqual(len(bin_align.reference.seqs), 2)
     self.assertSequenceEqual(bin_align.reference.seqs[1], list(range(4)))
Ejemplo n.º 28
0
 def test_make_from_matrix(self):
     from multicov.binary import BinaryAlignment
     from multicov.alignment import ReferenceMapping
     from multicov.alphabet import rna_alphabet
     bin_data = np.asmatrix([[1, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0],
                             [0, 0, 1, 0, 0, 0, 0, 1, 1, 0, 0, 0],
                             [0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0]])
     bin_align = BinaryAlignment(bin_data, rna_alphabet)
     self.assertEqual(len(bin_align.alphabets), 1)
     self.assertEqual(bin_align.alphabets[0][0], rna_alphabet)
     self.assertEqual(bin_align.alphabets[0][1], 3)
     self.assertEqual(bin_align.reference, ReferenceMapping(list(range(3))))
     self.assertTrue(np.array_equal(bin_align.data.todense(), bin_data))
     self.assertEqual(bin_align.include_gaps, False)
Ejemplo n.º 29
0
    def test_unequal_different_annotations(self):
        from multicov.binary import BinaryAlignment
        from multicov.alphabet import dna_alphabet, rna_alphabet

        bin_align1 = BinaryAlignment(
            [[0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1],
             [0, 1, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1]], dna_alphabet)
        bin_align1.add([[0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1],
                        [0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0]],
                       rna_alphabet)

        bin_align2 = BinaryAlignment(bin_align1)
        bin_align2.annotations['seqw'] = [0.5, 1.2]
        bin_align2.annotations['fitness'] = [0, -1]
        self.assertTrue(bin_align1 != bin_align2)
        self.assertFalse(bin_align1 == bin_align2)
Ejemplo n.º 30
0
 def test_multi(self):
     from multicov.binary import BinaryAlignment
     from multicov.alphabet import protein_alphabet, dna_alphabet
     bin_align = BinaryAlignment(
         [[
             0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
             0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
         ],
          [
              0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1,
              0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
          ],
          [
              0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
              1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
          ]], protein_alphabet)
     bin_align.add([[0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1],
                    [0, 1, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1],
                    [1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0]],
                   dna_alphabet)
     self.assertEqual(len(bin_align.alphabets), 2)
     self.assertEqual(bin_align.alphabets[0], (protein_alphabet, 2))
     self.assertEqual(bin_align.alphabets[1], (dna_alphabet, 4))