~ubuntu-branches/ubuntu/trusty/bioperl/trusty

« back to all changes in this revision

Viewing changes to t/Align/SimpleAlign.t

  • Committer: Package Import Robot
  • Author(s): Charles Plessy
  • Date: 2013-09-22 13:39:48 UTC
  • mfrom: (3.1.11 sid)
  • Revision ID: package-import@ubuntu.com-20130922133948-c6z62zegjyp7ztou
Tags: 1.6.922-1
* New upstream release.
* Replaces and Breaks grinder (<< 0.5.3-3~) because of overlaping contents.
  Closes: #722910
* Stop Replacing and Breaking bioperl ( << 1.6.9 ): not needed anymore. 

Show diffs side-by-side

added added

removed removed

Lines of Context:
7
7
    use lib '.';
8
8
    use Bio::Root::Test;
9
9
 
10
 
    test_begin( -tests => 199 );
 
10
    test_begin( -tests => 206 );
11
11
 
12
12
    use_ok('Bio::SimpleAlign');
13
13
    use_ok('Bio::AlignIO');
38
38
isa_ok( $aln2, 'Bio::Align::AlignI' );
39
39
is( $aln2->num_sequences, 3, 'num_sequences' );
40
40
 
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' );
44
44
is(
52
52
    'select_noncont'
53
53
);
54
54
 
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' );
58
58
is(
66
66
    'select_noncont'
67
67
);
68
68
 
 
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';
 
76
 
 
77
 
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';
357
366
# Bio::FeatureHolder stuff
358
367
 
359
368
$aln = Bio::SimpleAlign->new;
 
369
isa_ok($aln,"Bio::AnnotatableI");
 
370
 
360
371
for my $seqset ( [qw(one AGAGGAT)], [qw(two AGACGAT)], [qw(three AGAGGTT)] ) {
361
372
    $aln->add_seq(
362
373
        Bio::LocatableSeq->new(
576
587
);
577
588
my $e = Bio::LocatableSeq->new(
578
589
    -id    => 'e',
579
 
    -strand => 1,    
 
590
    -strand => 1,
580
591
    -seq   => '-t-gatcgatcga-c-',
581
592
    -start => 100,
582
593
    -end   => 111
670
681
        is $seq->end,   101;
671
682
        is $seq->strand, 1;
672
683
        is $seq->seq,   '-t-g';
673
 
    }    
 
684
    }
674
685
}
675
686
 
676
687
my $f = Bio::LocatableSeq->new(
746
757
 
747
758
    is( $aln->consensus_string, $consensus, 'consensus string looks ok' );
748
759
 
 
760
 
 
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");
 
776
 
 
777
 
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
767
796
 
768
797
###### test with phylip
769
798
 
770
 
    my $phy_fh = IO::String->new( <<EOF );
771
 
 3   37
772
 
seq1        AAAATGGGGG TGGT------ GGTACCT--- -------
773
 
seq2        -----GGCGG TGGTGNNNNG GGTTCCCTNN NNNNNNN
774
 
new         AAAATGGNGG TGGTN----N GGTNCCNTNN NNNNNNN
775
 
EOF
 
799
    my $phylip_str = <<EOF;
 
800
 3 37
 
801
seq1         AAAATGGGGG TGGT------ GGTACCT--- -------
 
802
seq2         -----GGCGG TGGTGNNNNG GGTTCCCTNN NNNNNNN
 
803
new          AAAATGGNGG TGGTN----N GGTNCCNTNN NNNNNNN
 
804
 
 
805
EOF
 
806
 
 
807
    my $phylip_masked = <<EOF;
 
808
 3 37
 
809
seq1         AAAATGGGGG TGGT------ GGTACCT--- -------
 
810
seq2         -----GGCGG TGGT?????? GGTTCCCTNN NNNNNNN
 
811
new          AAAATGGNGG TGGT?----? GGTNCCNTNN NNNNNNN
 
812
 
 
813
EOF
 
814
 
 
815
    my $phy_fh = IO::String->new( $phylip_str );
776
816
 
777
817
    my $in = Bio::AlignIO->new( -fh => $phy_fh, -format => 'phylip' );
 
818
    unified_diff;
778
819
 
779
820
    $aln = $in->next_aln();
780
 
    is( aln2str( $aln, 'phylip' ), <<EOU );
781
 
 3 37
782
 
seq1         AAAATGGGGG TGGT------ GGTACCT--- ------- 
783
 
seq2         -----GGCGG TGGTGNNNNG GGTTCCCTNN NNNNNNN 
784
 
new          AAAATGGNGG TGGTN----N GGTNCCNTNN NNNNNNN 
785
 
 
786
 
EOU
 
821
    eq_or_diff( aln2str( $aln, 'phylip' ), $phylip_str );
787
822
 
788
823
    $newaln = $aln->mask_columns(15,20,'?');
789
 
    is( aln2str( $newaln,'phylip' ), <<EOU, 'align after looks ok' );
790
 
 3 37
791
 
seq1         AAAATGGGGG TGGT------ GGTACCT--- ------- 
792
 
seq2         -----GGCGG TGGT?????? GGTTCCCTNN NNNNNNN 
793
 
new          AAAATGGNGG TGGT?----? GGTNCCNTNN NNNNNNN 
794
 
 
795
 
EOU
 
824
    eq_or_diff( aln2str( $newaln,'phylip' ), $phylip_masked, 'align after looks ok' );
796
825
}
797
826
 
798
827
######## SUBROUTINES
805
834
    $alignio_out->write_aln( $aln );
806
835
    return $out;
807
836
}
808