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