~ubuntu-branches/ubuntu/saucy/bioperl/saucy-proposed

« back to all changes in this revision

Viewing changes to t/SeqIO/SeqBuilder.t

  • Committer: Bazaar Package Importer
  • Author(s): Charles Plessy
  • Date: 2009-03-10 07:19:11 UTC
  • mfrom: (1.2.3 upstream)
  • Revision ID: james.westby@ubuntu.com-20090310071911-fukqzw54pyb1f0bd
Tags: 1.6.0-2
* Removed patch system (not used):
  - removed instuctions in debian/rules;
  - removed quilt from Build-Depends in debian/control.
* Re-enabled tests:
  - uncommented test command in debian/rules;
  - uncommented previously missing build-dependencies in debian/control.
  - Re-enabled tests and uncommented build-dependencies accordingly.
* Removed libmodule-build-perl and libtest-harness-perl from
  Build-Depends-Indep (provided by perl-modules).
* Better cleaning of empty directories using find -type d -empty -delete
  instead of rmdir in debian/rules (LP: #324001).

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
# -*-Perl-*- Test Harness script for Bioperl
 
2
# $Id: SeqBuilder.t 15112 2008-12-08 18:12:38Z sendu $
 
3
 
 
4
use strict;
 
5
 
 
6
BEGIN {     
 
7
    use lib '.';
 
8
    use Bio::Root::Test;
 
9
    
 
10
    test_begin(-tests => 101);
 
11
        
 
12
        use_ok('Bio::SeqIO');
 
13
}
 
14
 
 
15
my $verbosity = test_debug();
 
16
 
 
17
my ($seqio, $seq); # predeclare variables for strict
 
18
 
 
19
# default mode
 
20
ok $seqio = Bio::SeqIO->new('-file'=> test_input_file('test.genbank'), 
 
21
                         '-format' => 'GenBank');
 
22
$seqio->verbose($verbosity);
 
23
 
 
24
my $numseqs = 0;
 
25
my @loci = qw(U63596 U63595 M37762 NT_010368 L26462);
 
26
my @numfeas = (3,1,6,3,26);
 
27
 
 
28
while($seq = $seqio->next_seq()) {
 
29
    is ($seq->accession_number, $loci[$numseqs++]);
 
30
    ok ($seq->annotation->get_Annotations());
 
31
    is (scalar($seq->top_SeqFeatures), $numfeas[$numseqs-1]);
 
32
    ok ($seq->species->binomial);
 
33
    ok ($seq->seq);
 
34
}
 
35
is ($numseqs, 5);
 
36
 
 
37
# minimalistic mode
 
38
$seqio = Bio::SeqIO->new('-file'=> test_input_file('test.genbank'), 
 
39
                         '-format' => 'GenBank');
 
40
ok $seqio;
 
41
$seqio->verbose($verbosity);
 
42
ok my $seqbuilder = $seqio->sequence_builder();
 
43
isa_ok $seqbuilder, "Bio::Factory::ObjectBuilderI";
 
44
$seqbuilder->want_none();
 
45
$seqbuilder->add_wanted_slot('display_id','accession_number','desc');
 
46
 
 
47
$numseqs = 0;
 
48
 
 
49
while($seq = $seqio->next_seq()) {
 
50
    is ($seq->accession_number, $loci[$numseqs++]);
 
51
    is (scalar(grep { ! ($_->tagname eq "keyword" ||
 
52
                         $_->tagname eq "date_changed" ||
 
53
                         $_->tagname eq "secondary_accession"); }
 
54
               $seq->annotation->get_Annotations()), 0);
 
55
    if($numseqs <= 3) {
 
56
                is (scalar($seq->top_SeqFeatures), 0);
 
57
    }
 
58
        else {
 
59
                is (scalar($seq->top_SeqFeatures), $numfeas[$numseqs-1]);
 
60
    }
 
61
    is ($seq->species, undef);
 
62
    is ($seq->seq, undef);
 
63
    # switch on features for the last 2 seqs
 
64
    $seqbuilder->add_wanted_slot('features') if $numseqs == 3;
 
65
}
 
66
is ($numseqs, 5);
 
67
 
 
68
# everything but no sequence, and no features
 
69
$seqio = Bio::SeqIO->new('-file'=> test_input_file('test.genbank'), 
 
70
                         '-format' => 'GenBank');
 
71
ok $seqio;
 
72
$seqio->verbose($verbosity);
 
73
$seqbuilder = $seqio->sequence_builder();
 
74
# want-all is default
 
75
$seqbuilder->add_unwanted_slot('seq','features');
 
76
 
 
77
$numseqs = 0;
 
78
 
 
79
while($seq = $seqio->next_seq()) {
 
80
    is ($seq->accession_number, $loci[$numseqs++]);
 
81
    ok scalar($seq->annotation->get_Annotations());
 
82
    if($numseqs <= 3) {
 
83
                is (scalar($seq->top_SeqFeatures), 0);
 
84
    }
 
85
        else {
 
86
                is (scalar($seq->top_SeqFeatures), $numfeas[$numseqs-1]);
 
87
    }
 
88
    ok $seq->species->binomial;
 
89
    is ($seq->seq, undef);
 
90
    # switch on features for the last 2 seqs
 
91
    if($numseqs == 3) {
 
92
        $seqbuilder->add_unwanted_slot(
 
93
             grep { $_ ne 'features'; } $seqbuilder->remove_unwanted_slots());
 
94
    }
 
95
}
 
96
is ($numseqs, 5);
 
97
 
 
98
# skip sequences less than 100bp or accession like 'NT_*'
 
99
$seqio = Bio::SeqIO->new('-file'=> test_input_file('test.genbank'), 
 
100
                         '-format' => 'GenBank');
 
101
ok $seqio;
 
102
$seqio->verbose($verbosity);
 
103
$seqbuilder = $seqio->sequence_builder();
 
104
# we could have as well combined the two conditions into one, but we want to
 
105
# test the implicit AND here
 
106
$seqbuilder->add_object_condition(sub {
 
107
    my $h = shift;
 
108
    return 0 if($h->{'-length'} < 100);
 
109
    return 1;
 
110
});
 
111
$seqbuilder->add_object_condition(sub {
 
112
    my $h = shift;
 
113
    return 0 if($h->{'-display_id'} =~ /^NT_/);
 
114
    return 1;
 
115
});
 
116
 
 
117
$numseqs = 0;
 
118
my $i = 0;
 
119
 
 
120
while($seq = $seqio->next_seq()) {
 
121
    $numseqs++;
 
122
    is ($seq->accession_number, $loci[$i]);
 
123
    ok scalar($seq->annotation->get_Annotations());
 
124
    is (scalar($seq->top_SeqFeatures), $numfeas[$i]);
 
125
    ok $seq->species->binomial;
 
126
    ok $seq->seq;
 
127
    $i += 2;
 
128
}
 
129
is ($numseqs, 3);