38
38
isa_ok( $aln2, 'Bio::Align::AlignI' );
39
39
is( $aln2->num_sequences, 3, 'num_sequences' );
41
# test select non continuous-sorted by default
41
# test select non contiguous-sorted by default
42
42
$aln2 = $aln->select_noncont( 6, 7, 8, 9, 10, 1, 2, 3, 4, 5 );
43
43
is( $aln2->num_sequences, 10, 'num_sequences' );
55
# test select non continuous-nosort option
55
# test select non contiguous-nosort option
56
56
$aln2 = $aln->select_noncont( 'nosort', 6, 7, 8, 9, 10, 1, 2, 3, 4, 5 );
57
57
is( $aln2->num_sequences, 10, 'num_sequences' );
69
# test select non contiguous by name
70
my $aln3 = $aln->select_noncont_by_name('1433_LYCES','BMH1_YEAST','143T_HUMAN');
71
is( $aln3->num_sequences, 3, 'select_noncont_by_name' );
72
my @seqs3 = $aln3->each_seq();
73
is $seqs3[0]->id, '1433_LYCES', 'select_noncont_by_name';
74
is $seqs3[1]->id, 'BMH1_YEAST', 'select_noncont_by_name';
75
is $seqs3[2]->id, '143T_HUMAN', 'select_noncont_by_name';
69
78
@seqs = $aln->each_seq();
70
79
is scalar @seqs, 16, 'each_seq';
71
80
is $seqs[0]->get_nse, '1433_LYCES/9-246', 'get_nse';
747
758
is( $aln->consensus_string, $consensus, 'consensus string looks ok' );
761
my @cons_got = $aln->consensus_conservation;
762
# 422 positions, mostly two of six sequences conserved, set as default
763
my @cons_expect = (100 * 2/6) x 422;
764
# Exceptionally columns as a mask, manually determined (1-based columns)
765
$cons_expect[$_-1] = 100 * 1/6 for (5,12,41,70,82,310,390);
766
$cons_expect[$_-1] = 100 * 3/6 for (27,30,32,36,47,49,61,66,69,71,77,79,
767
81,91,96,97,105,114,115,117,118,121,122,129,140,146,156,159,160,162,
768
183,197,217,221,229,242,247,248,261,266,282,287,295,316,323,329,335,337,344,);
769
$cons_expect[$_-1] = 100 * 4/6 for (84,93,99,100,102,107,108,112,113,119,150,);
770
$cons_expect[$_-1] = 100 * 5/6 for (81,110);
771
# Format for string comparison
772
@cons_expect = map { sprintf "%4.1f", $_ } @cons_expect;
773
@cons_got = map { sprintf "%4.1f", $_ } @cons_got;
774
is(length($aln->consensus_string), scalar(@cons_got),"conservation length");
775
is_deeply(\@cons_got, \@cons_expect, "conservation scores");
749
778
is( aln2str( $aln => 'pfam' ), <<EOA, 'looks like correct unmasked alignment (from clustalw)' );
750
779
P84139/1-420 MNEGEHQIKLDELFEKLLRARKIFKNKDVLRHSYTPKDLPLRHEQIETLAQILVPVLRGETPSNIFVYG-KTGTGKTVTVK-FVTEELKRISEKYNIPVDVIYINCEIVDTHYRVLANIVNYFKDETGIGVPMVGWPTDEVYAKLKQVIDMKERFVIIVLDEIDKLVKKSGDEVLYSLTRINTELKRAKVSVIGISNDLKFKEYLDPRVLSSLSEEEVVFPPYDANQLRDILTQRAEEAFYPGVLDEGVIPLCAALAAREHGDARKALDLLRVAGEIAEREGASKVTEKHVWKAQEKIEQDMMEEVIKTRPLQSKVLLYAIVLLDENGDLPANTGDVYAVYRELCEYIDLEPLTQRRISDLINELDMLGIINAKVVSKGRYGRTKEIRLNVTSYKIRNVLRYDYSIQPLLTISLKSEQRRLI
751
780
P814153/1-420 MNEGMHQIKLDVLFEKLLRARKIFKNKDVLRHSYTPKDLPHRHEQIETLAQILVPVLRGETPSNIFVYG-KTGTGKTVTVK-FVTEELKRISEKYNIPVDVIYINCEIVDTHYRVLANIVNYFKDETGIEVPMVGWPTDEVYAKLKQVIDMKERFVIIVLDEIDKLVKKSGDEVLYSLTRINTELKRAKVSVIGISNDLKFKEYLDPRVLSSLSEEEVVFPPYDANQLRDILTQRAEEAFYPGVLDEGVIPLCAALAAREHGDARKALDLLRVAGEIAEREGASKVTEKHVWKAQEKIEQDMMEEVIKTLPLQSKVLLYAIVLLDENGDLPANTGDVYAVYRELCEYIDLEPLTQRRISDLINELDMLGIINAKVVSKGRYGRTKEIRLMVTSYKIRNVLRYDYSIQPLLTISLKSEQRRLI
768
797
###### test with phylip
770
my $phy_fh = IO::String->new( <<EOF );
772
seq1 AAAATGGGGG TGGT------ GGTACCT--- -------
773
seq2 -----GGCGG TGGTGNNNNG GGTTCCCTNN NNNNNNN
774
new AAAATGGNGG TGGTN----N GGTNCCNTNN NNNNNNN
799
my $phylip_str = <<EOF;
801
seq1 AAAATGGGGG TGGT------ GGTACCT--- -------
802
seq2 -----GGCGG TGGTGNNNNG GGTTCCCTNN NNNNNNN
803
new AAAATGGNGG TGGTN----N GGTNCCNTNN NNNNNNN
807
my $phylip_masked = <<EOF;
809
seq1 AAAATGGGGG TGGT------ GGTACCT--- -------
810
seq2 -----GGCGG TGGT?????? GGTTCCCTNN NNNNNNN
811
new AAAATGGNGG TGGT?----? GGTNCCNTNN NNNNNNN
815
my $phy_fh = IO::String->new( $phylip_str );
777
817
my $in = Bio::AlignIO->new( -fh => $phy_fh, -format => 'phylip' );
779
820
$aln = $in->next_aln();
780
is( aln2str( $aln, 'phylip' ), <<EOU );
782
seq1 AAAATGGGGG TGGT------ GGTACCT--- -------
783
seq2 -----GGCGG TGGTGNNNNG GGTTCCCTNN NNNNNNN
784
new AAAATGGNGG TGGTN----N GGTNCCNTNN NNNNNNN
821
eq_or_diff( aln2str( $aln, 'phylip' ), $phylip_str );
788
823
$newaln = $aln->mask_columns(15,20,'?');
789
is( aln2str( $newaln,'phylip' ), <<EOU, 'align after looks ok' );
791
seq1 AAAATGGGGG TGGT------ GGTACCT--- -------
792
seq2 -----GGCGG TGGT?????? GGTTCCCTNN NNNNNNN
793
new AAAATGGNGG TGGT?----? GGTNCCNTNN NNNNNNN
824
eq_or_diff( aln2str( $newaln,'phylip' ), $phylip_masked, 'align after looks ok' );
798
827
######## SUBROUTINES