def doublegap_test(self):
        hmmaln = '...mravfiqgaeehpaafcyqvngscprtvhtlgiqlviylacaagmliivlgnvfvafavsyfkalhtptnflllslaladmflgllvlplstirsvescwffgdflcrlhtyldtlfcltsifhlcfisidrhcaicdpllypskftvrvalryilagwgvpaaytslflytdvvetrlsqwleempc'
        hmmaln += 'vgscqlllnk-FWG.WLNFP.L-FFVPCLIMISLYVKIFV-vatrqaqqittlskslagaakherkaaktlgiavgiyllcwlpftidtmvdsllhfitpplvfdifiwfayfnsacnpiiyvfsyqwfrkalkltlsqkvfspqtrtvdlyqe...........'

        aln = {
            'TAAR5_HUMAN': {
                5: {
                    'sequence': hmmaln,
                }
            }
        }
        tm_lengths = {5: 26}

        alignment.cut_out_aligned_part(aln, tm_lengths)

        seq = 'mravfiqgaeehpaafcyqvngscprtvhtlgiqlviylacaagmliivlgnvfvafavsyfkalhtptnflllslaladmflgllvlplstirsvescwffgdflcrlhtyldtlfcltsifhlcfisidrhcaicdpllypskftvrvalryilagwgvpaaytslflytdvvetrlsqwleempc'
        seq += 'vgscqlllnkFWGWLNFPLFFVPCLIMISLYVKIFVvatrqaqqittlskslagaakherkaaktlgiavgiyllcwlpftidtmvdsllhfitpplvfdifiwfayfnsacnpiiyvfsyqwfrkalkltlsqkvfspqtrtvdlyqe'
        tmseq = 'FWGWLNFPLFFVPCLIMISLYVKIFV'
        # TODO expected seq to contain gaps in TM section + tmseq=NKFW-GWLNF-PLFFVPCLIMISLYVKIFVV
        expected = {
            'TAAR5_HUMAN': {
                5: {
                    'helixseq': tmseq,
                    'helixlength': 26,
                    'sequence': seq,
                    'seqlength': 337,
                    'firstaa': 198,
                    'lastaa': 224,
                    'cut_off': True
                }
            }
        }
        self.maxDiff = None
        self.assertEquals(aln, expected)
    def doublegap_test(self):
        hmmaln = '...mravfiqgaeehpaafcyqvngscprtvhtlgiqlviylacaagmliivlgnvfvafavsyfkalhtptnflllslaladmflgllvlplstirsvescwffgdflcrlhtyldtlfcltsifhlcfisidrhcaicdpllypskftvrvalryilagwgvpaaytslflytdvvetrlsqwleempc'
        hmmaln += 'vgscqlllnk-FWG.WLNFP.L-FFVPCLIMISLYVKIFV-vatrqaqqittlskslagaakherkaaktlgiavgiyllcwlpftidtmvdsllhfitpplvfdifiwfayfnsacnpiiyvfsyqwfrkalkltlsqkvfspqtrtvdlyqe...........'

        aln = {
            'TAAR5_HUMAN': {
                5: {
                    'sequence': hmmaln,
                }
            }
        }
        tm_lengths = {5: 26}

        alignment.cut_out_aligned_part(aln, tm_lengths)

        seq = 'mravfiqgaeehpaafcyqvngscprtvhtlgiqlviylacaagmliivlgnvfvafavsyfkalhtptnflllslaladmflgllvlplstirsvescwffgdflcrlhtyldtlfcltsifhlcfisidrhcaicdpllypskftvrvalryilagwgvpaaytslflytdvvetrlsqwleempc'
        seq += 'vgscqlllnkFWGWLNFPLFFVPCLIMISLYVKIFVvatrqaqqittlskslagaakherkaaktlgiavgiyllcwlpftidtmvdsllhfitpplvfdifiwfayfnsacnpiiyvfsyqwfrkalkltlsqkvfspqtrtvdlyqe'
        tmseq = 'FWGWLNFPLFFVPCLIMISLYVKIFV'
        # TODO expected seq to contain gaps in TM section + tmseq=NKFW-GWLNF-PLFFVPCLIMISLYVKIFVV
        expected = {
            'TAAR5_HUMAN': {
                5: {
                    'helixseq': tmseq,
                    'helixlength': 26,
                    'sequence': seq,
                    'seqlength': 337,
                    'firstaa': 198,
                    'lastaa': 224,
                    'cut_off': True
                }
            }
        }
        self.maxDiff = None
        self.assertEquals(aln, expected)
    def nogaps_test(self):
        hmmaln = '................................................................'
        hmmaln += '....................menetvselnqtqlqpravvaleyqvvtillvliicglgivgn'
        hmmaln += 'imvvlvvmrtkhmrtptncylvslavadlmvlvaaglpnitdsiygswvygyvGCLCITYL.Q'
        hmmaln += '.YLGIN.A..SSCSI.T..AFTIERYIAichpikaqflctfsrakkiiifvwaftslycmlwf'
        hmmaln += 'flldlnistykdaiviscgykisrnyyspiylmdfgvfyvvpmilatvlygfiarilflnpip'
        hmmaln += 'sdpkensktwkndsthqntnlnvntsnrcfnstvssrkqvtkmlavvvilfallwmpyrtlvv'
        hmmaln += 'vnsflsspfqenwfllfcriciylnsainpviynlmsqkfraafrklcnckqkptekpanysv'
        hmmaln += 'alnysvikesdhfsteldditvtdtylsatkvsfddtclasevsfsqs.........'

        aln = {
            'TRFR_HUMAN': {
                3: {
                    'sequence': hmmaln,
                }
            }
        }
        tm_lengths = {3: 30}

        alignment.cut_out_aligned_part(aln, tm_lengths)

        seq = 'menetvselnqtqlqpravvaleyqvvtillvliicglgivgn'
        seq += 'imvvlvvmrtkhmrtptncylvslavadlmvlvaaglpnitdsiygswvygyvGCLCITYLQ'
        seq += 'YLGINASSCSITAFTIERYIAichpikaqflctfsrakkiiifvwaftslycmlwf'
        seq += 'flldlnistykdaiviscgykisrnyyspiylmdfgvfyvvpmilatvlygfiarilflnpip'
        seq += 'sdpkensktwkndsthqntnlnvntsnrcfnstvssrkqvtkmlavvvilfallwmpyrtlvv'
        seq += 'vnsflsspfqenwfllfcriciylnsainpviynlmsqkfraafrklcnckqkptekpanysv'
        seq += 'alnysvikesdhfsteldditvtdtylsatkvsfddtclasevsfsqs'
        tmseq = 'GCLCITYLQYLGINASSCSITAFTIERYIA'
        expected = {
            'TRFR_HUMAN': {
                3: {
                    'helixseq': tmseq,
                    'helixlength': 30,
                    'sequence': seq,
                    'seqlength': 398,
                    'firstaa': 96,
                    'lastaa': 126,
                    'cut_off': True
                }
            }
        }
        self.assertEquals(aln, expected)
    def nogaps_test(self):
        hmmaln = '................................................................'
        hmmaln += '....................menetvselnqtqlqpravvaleyqvvtillvliicglgivgn'
        hmmaln += 'imvvlvvmrtkhmrtptncylvslavadlmvlvaaglpnitdsiygswvygyvGCLCITYL.Q'
        hmmaln += '.YLGIN.A..SSCSI.T..AFTIERYIAichpikaqflctfsrakkiiifvwaftslycmlwf'
        hmmaln += 'flldlnistykdaiviscgykisrnyyspiylmdfgvfyvvpmilatvlygfiarilflnpip'
        hmmaln += 'sdpkensktwkndsthqntnlnvntsnrcfnstvssrkqvtkmlavvvilfallwmpyrtlvv'
        hmmaln += 'vnsflsspfqenwfllfcriciylnsainpviynlmsqkfraafrklcnckqkptekpanysv'
        hmmaln += 'alnysvikesdhfsteldditvtdtylsatkvsfddtclasevsfsqs.........'

        aln = {
            'TRFR_HUMAN': {
                3: {
                    'sequence': hmmaln,
                }
            }
        }
        tm_lengths = {3: 30}

        alignment.cut_out_aligned_part(aln, tm_lengths)

        seq = 'menetvselnqtqlqpravvaleyqvvtillvliicglgivgn'
        seq += 'imvvlvvmrtkhmrtptncylvslavadlmvlvaaglpnitdsiygswvygyvGCLCITYLQ'
        seq += 'YLGINASSCSITAFTIERYIAichpikaqflctfsrakkiiifvwaftslycmlwf'
        seq += 'flldlnistykdaiviscgykisrnyyspiylmdfgvfyvvpmilatvlygfiarilflnpip'
        seq += 'sdpkensktwkndsthqntnlnvntsnrcfnstvssrkqvtkmlavvvilfallwmpyrtlvv'
        seq += 'vnsflsspfqenwfllfcriciylnsainpviynlmsqkfraafrklcnckqkptekpanysv'
        seq += 'alnysvikesdhfsteldditvtdtylsatkvsfddtclasevsfsqs'
        tmseq = 'GCLCITYLQYLGINASSCSITAFTIERYIA'
        expected = {
            'TRFR_HUMAN': {
                3: {
                    'helixseq': tmseq,
                    'helixlength': 30,
                    'sequence': seq,
                    'seqlength': 398,
                    'firstaa': 96,
                    'lastaa': 126,
                    'cut_off': True
                }
            }
        }
        self.assertEquals(aln, expected)
    def singlegap_test(self):
        hmmaln = '...mdgsnvtsfvveeptnistgrnasvgnahrqipivhwvimsispvgfvengillwflcfrmrrnpft-VYITHLSIA..DISLLF..CIFILSI--dya'
        hmmaln += 'ldyelssghyytivtlsvtflfgyntglylltaisverclsvlypiwyrchrpkyqsalvcallwalsclvttmeyvmcidreeeshsrndcraviifiailsflvftplmlvsstilvvkirkntwashssklyivimvtiiiflifampmrllyllyyeywstfgnlhhisllfstinssanpfiyffvgsskkkrfk'
        hmmaln += 'eslkvvltrafkdemqprrqkdncntvtvetvv.......................................................................................................................................................................'

        aln = {
            'MAS_HUMAN': {
                2: {
                    'sequence': hmmaln,
                }
            }
        }
        tm_lengths = {2: 26}

        alignment.cut_out_aligned_part(aln, tm_lengths)

        seq = 'mdgsnvtsfvveeptnistgrnasvgnahrqipivhwvimsispvgfvengillwflcfrmrrnpftVYITHLSIADISLLFCIFILSIdya'
        seq += 'ldyelssghyytivtlsvtflfgyntglylltaisverclsvlypiwyrchrpkyqsalvcallwalsclvttmeyvmcidreeeshsrndcraviifiailsflvftplmlvsstilvvkirkntwashssklyivimvtiiiflifampmrllyllyyeywstfgnlhhisllfstinssanpfiyffvgsskkkrfk'
        seq += 'eslkvvltrafkdemqprrqkdncntvtvetvv'
        tmseq = 'VYITHLSIADISLLFCIFILSI'
        # TODO expected seq to contain gaps in TM section + tmseq=TVYITHLSIADISLLF-CIFILSIDY
        expected = {
            'MAS_HUMAN': {
                2: {
                    'helixseq': tmseq,
                    'helixlength': 22,
                    'sequence': seq,
                    'seqlength': 325,
                    'firstaa': 67,
                    'lastaa': 89,
                    'cut_off': True
                }
            }
        }
        self.maxDiff = None
        self.assertEquals(aln, expected)
    def singlegap_test(self):
        hmmaln = '...mdgsnvtsfvveeptnistgrnasvgnahrqipivhwvimsispvgfvengillwflcfrmrrnpft-VYITHLSIA..DISLLF..CIFILSI--dya'
        hmmaln += 'ldyelssghyytivtlsvtflfgyntglylltaisverclsvlypiwyrchrpkyqsalvcallwalsclvttmeyvmcidreeeshsrndcraviifiailsflvftplmlvsstilvvkirkntwashssklyivimvtiiiflifampmrllyllyyeywstfgnlhhisllfstinssanpfiyffvgsskkkrfk'
        hmmaln += 'eslkvvltrafkdemqprrqkdncntvtvetvv.......................................................................................................................................................................'

        aln = {
            'MAS_HUMAN': {
                2: {
                    'sequence': hmmaln,
                }
            }
        }
        tm_lengths = {2: 26}

        alignment.cut_out_aligned_part(aln, tm_lengths)

        seq = 'mdgsnvtsfvveeptnistgrnasvgnahrqipivhwvimsispvgfvengillwflcfrmrrnpftVYITHLSIADISLLFCIFILSIdya'
        seq += 'ldyelssghyytivtlsvtflfgyntglylltaisverclsvlypiwyrchrpkyqsalvcallwalsclvttmeyvmcidreeeshsrndcraviifiailsflvftplmlvsstilvvkirkntwashssklyivimvtiiiflifampmrllyllyyeywstfgnlhhisllfstinssanpfiyffvgsskkkrfk'
        seq += 'eslkvvltrafkdemqprrqkdncntvtvetvv'
        tmseq = 'VYITHLSIADISLLFCIFILSI'
        # TODO expected seq to contain gaps in TM section + tmseq=TVYITHLSIADISLLF-CIFILSIDY
        expected = {
            'MAS_HUMAN': {
                2: {
                    'helixseq': tmseq,
                    'helixlength': 22,
                    'sequence': seq,
                    'seqlength': 325,
                    'firstaa': 67,
                    'lastaa': 89,
                    'cut_off': True
                }
            }
        }
        self.maxDiff = None
        self.assertEquals(aln, expected)