[3] | 1 | """ |
---|
| 2 | Tests for `bx.align.score`. |
---|
| 3 | """ |
---|
| 4 | |
---|
| 5 | import bx.align.score |
---|
| 6 | import bx.align.maf |
---|
| 7 | import StringIO |
---|
| 8 | import unittest |
---|
| 9 | import sys |
---|
| 10 | |
---|
| 11 | from numpy import array, cumsum, allclose |
---|
| 12 | |
---|
| 13 | aligns = [ ( "CCACTAGTTTTTAAATAATCTACTATCAAATAAAAGATTTGTTAATAATAAATTTTAAATCATTAACACTT", |
---|
| 14 | "CCATTTGGGTTCAAAAATTGATCTATCA----------TGGTGGATTATTATTTAGCCATTAAGGACAAAT", |
---|
| 15 | -111 ), |
---|
| 16 | ( "CCACTAGTTTTTAAATAATCTAC-----AATAAAAGATTTGTTAATAAT---AAATTTTAAATCATTAA-----CACTT", |
---|
| 17 | "CCATTTGGGTTCAAAAATTGATCTATCA----------TGGTGGAT---TATTATTT-----AGCCATTAAGGACAAAT", |
---|
| 18 | -3626 ), |
---|
| 19 | ( "CCACTAGTTTTTGATTC", |
---|
| 20 | "CCATTTGGGTTC-----", |
---|
| 21 | -299 ), |
---|
| 22 | ( "CTTAGTTTTTGATCACC", |
---|
| 23 | "-----CTTGGGTTTACC", |
---|
| 24 | -299 ), |
---|
| 25 | ( "gggaattgaacaatgagaacacatggacacaggaaggggaacatcacacacc----------ggggcctgttgtggggtggggggaag", |
---|
| 26 | "ggaactagaacaagggagacacatacaaacaacaacaacaacaacacagcccttcccttcaaagagcttatagtctgatggaggagag", |
---|
| 27 | 1690 ) |
---|
| 28 | ] |
---|
| 29 | |
---|
| 30 | mafs = """##maf |
---|
| 31 | a score=2883.0 |
---|
| 32 | s hg17.chr1 6734 30 + 245522847 CTACCTCAGTGTGGAAGGTGGGCAGTTCTG |
---|
| 33 | s rheMac1.SCAFFOLD71394 9319 30 - 13789 CTACCTCAGTGTGGAAGGTGGGCAGTTCTG |
---|
| 34 | |
---|
| 35 | a score=8167.0 |
---|
| 36 | s hg17.chr1 41401 40 + 245522847 TGTGTGATTAATGCCTGAGACTGTGTGAAGTAAGAGATGG |
---|
| 37 | s panTro1.chr1 49673 40 + 229575298 TGCGTGATTAATGCCTGAGATTGTGTGAAGTAAAAGATGG |
---|
| 38 | s rheMac1.SCAFFOLD45837 26063 33 - 31516 TGTGTGATTAATGCCTGAGATTGTGTGAAGTAA------- |
---|
| 39 | """ |
---|
| 40 | |
---|
| 41 | nonsymm_scheme = bx.align.score.build_scoring_scheme ( """ A C G T |
---|
| 42 | 91 0 -31 -123 |
---|
| 43 | -114 100 -125 -31 |
---|
| 44 | -31 -125 100 -114 |
---|
| 45 | -123 -31 -114 91 """, 400, 30 ) |
---|
| 46 | |
---|
| 47 | aligns_for_nonsymm_scheme = [ ( "AAAACCCCGGGGTTTT", |
---|
| 48 | "ACGTACGTACGTACGT", |
---|
| 49 | -580 ) |
---|
| 50 | ] |
---|
| 51 | |
---|
| 52 | |
---|
| 53 | asymm_scheme = bx.align.score.build_scoring_scheme ( """ 01 02 A C G T |
---|
| 54 | 01 200 -200 -50 100 -50 100 |
---|
| 55 | 02 -200 200 100 -50 100 -50 """, |
---|
| 56 | 0, 0, gap1='\x00' ) |
---|
| 57 | |
---|
| 58 | aligns_for_asymm_scheme = [ ( "\x01\x01\x01\x01\x01\x01", |
---|
| 59 | "ACGT\x01\x02", |
---|
| 60 | 100 ) |
---|
| 61 | ] |
---|
| 62 | |
---|
| 63 | |
---|
| 64 | class BasicTests( unittest.TestCase ): |
---|
| 65 | |
---|
| 66 | def test_scoring_text( self ): |
---|
| 67 | ss = bx.align.score.hox70 |
---|
| 68 | for t1, t2, score in aligns: |
---|
| 69 | self.assertEquals( bx.align.score.score_texts( ss, t1, t2 ), score ) |
---|
| 70 | |
---|
| 71 | def test_align( self ): |
---|
| 72 | ss = bx.align.score.hox70 |
---|
| 73 | for block in bx.align.maf.Reader( StringIO.StringIO( mafs ) ): |
---|
| 74 | self.assertEquals( bx.align.score.score_alignment( ss, block ), float( block.score ) ) |
---|
| 75 | |
---|
| 76 | def test_accumulate( self ): |
---|
| 77 | ss = bx.align.score.hox70 |
---|
| 78 | self.assert_( allclose( bx.align.score.accumulate_scores( ss, "-----CTTT", "CTTAGTTTA" ), |
---|
| 79 | cumsum( array( [ -430, -30, -30, -30, -30, -31, 91, 91, -123 ] ) ) ) ) |
---|
| 80 | self.assert_( allclose( bx.align.score.accumulate_scores( ss, "-----CTTT", "CTTAGTTTA", skip_ref_gaps=True ), |
---|
| 81 | cumsum( array( [ -581, 91, 91, -123 ] ) ) ) ) |
---|
| 82 | |
---|
| 83 | def test_nonsymm_scoring( self ): |
---|
| 84 | ss = nonsymm_scheme |
---|
| 85 | for t1, t2, score in aligns_for_nonsymm_scheme: |
---|
| 86 | self.assertEquals( bx.align.score.score_texts( ss, t1, t2 ), score ) |
---|
| 87 | |
---|
| 88 | def test_asymm_scoring( self ): |
---|
| 89 | ss = asymm_scheme |
---|
| 90 | for t1, t2, score in aligns_for_asymm_scheme: |
---|
| 91 | self.assertEquals( bx.align.score.score_texts( ss, t1, t2 ), score ) |
---|
| 92 | |
---|
| 93 | test_classes = [ BasicTests ] |
---|
| 94 | suite = unittest.TestSuite( [ unittest.makeSuite( c ) for c in test_classes ] ) |
---|