tag fourth (and hopefully last) alpha
[bioperl-live.git] / branch-1-6 / t / Tools / rnamotif.t
blob9c4e0f2a5091e1acece056c689742b166c485a8f
1 # -*-Perl-*- Test Harness script for Bioperl
2 # $Id$
4 use strict;
6 BEGIN {     
7     use lib '.';
8     use Bio::Root::Test;
9     
10     test_begin(-tests => 0);
13 my $verbose = test_debug();
15 ### RNAMotif.pm tests ###
17 my $parser = Bio::Tools::RNAMotif->new(
18                 -verbose => $verbose,
19         -file => test_input_file('trna.strict.rnamotif'),
20         -motiftag => 'tRNA_gene',
21         -desctag => 'tRNA');
23 my @genes;
24 while( my $gene = $parser->next_prediction ) {
25     push @genes, $gene;
29 my $val;
30 is($genes[1]->display_name, 'tRNA','RNAMotif::display_name()');
31 is($genes[12]->seq_id, 'M33910','RNAMotif::seq_id()');
32 is($genes[6]->primary_tag, 'tRNA_gene','RNAMotif::primary_tag()');
33 is($genes[22]->start, 464,'RNAMotif::start()');
34 is($genes[8]->end, 585,'RNAMotif::end()');
35 is($genes[9]->strand, 1,'RNAMotif::strand()');
36 is(($genes[90]->get_tag_values('sequence'))[0],
37    'cggatt ta ttg ggcg taa a gggct cgtaggc ggctc'.
38    ' gtcgcgtccggtgtgaaagtc catc gcttaac ggtg gatctg cgcc',
39    "RNAMotif::get_tag_values('sequence')");
40 is(($genes[90]->get_tag_values('descfile'))[0], 'trna.strict.descr',
41    "RNAMotif::get_tag_values('descfile')");
42 is(($genes[4]->get_tag_values('descline'))[0],
43    'gi|173683|gb|M10671|ACSTRW Avian oncornavirus Trp-tRNA',
44    "RNAMotif::get_tag_values('descline')");
45 is(($genes[26]->get_tag_values('secstructure'))[0],
46    'h5 ss h5 ss h3 ss h5 ss h3 ss h5 ss h3 h3 ss',
47    "RNAMotif::get_tag_values('secstructure')");
48 is($genes[4]->score, '0.000','RNAMotif::score()');
49 is($genes[4]->source_tag, 'RNAMotif','RNAMotif::source_tag()');
51 @genes=();
53 $parser = Bio::Tools::RNAMotif->new(
54                         -verbose => $verbose,
55             -file => test_input_file('sprintf.rnamotif'),
56             -motiftag => 'term',
57             -desctag => 'stem_loop');
59 while( my $gene = $parser->next_prediction ) {
60     push @genes, $gene;
63 is($genes[1]->display_name, 'stem_loop','RNAMotif::display_name()');
64 is($genes[12]->seq_id, 'M82700','RNAMotif::seq_id()');
65 is($genes[6]->primary_tag, 'term','RNAMotif::primary_tag()');
66 is($genes[22]->start, 141,'RNAMotif::start()');
67 is($genes[8]->end, 154,'RNAMotif::end()');
68 is($genes[9]->strand, -1,'RNAMotif::strand()');
69 is(($genes[90]->get_tag_values('sequence'))[0], 'ggggaag cttg cttcccc',
70    "RNAMotif::get_tag_values('sequence')");
71 is(($genes[84]->get_tag_values('descfile'))[0], 'sprintf.descr',
72    "RNAMotif::get_tag_values('descfile')");
73 is(($genes[4]->get_tag_values('descline'))[0],
74    'gi|173741|gb|M83548|AQF16SRRN Aquifex pyrophilus 16S ribosomal RNA (16S rRNA)',
75    "RNAMotif::get_tag_values('descline')");
76 is(($genes[26]->get_tag_values('secstructure'))[0], 'h5 ss h3',
77    "RNAMotif::get_Annotations('secstructure')");
78 is($genes[4]->score, '-12.100,5,gaaa','RNAMotif::score()');
79 is($genes[4]->source_tag, 'RNAMotif','RNAMotif::source_tag()');
81 ### ERPIN.pm tests ###
83 @genes = ();
85 my @erpinstats = (
86 ['30260185','5181155','5181183',1,'CTTT.aacc--.CAACC.CCGTGA.GGTTG.a.GAAG',
87  'gi|30260185|gb|AE016879.1| Bacillus anthracis str. Ames, complete genome',
88  '1.68e-05'],
89 ['30260185','3709092','3709121',-1,'CTTT.taatt-.CAGTC.CTGTGA.GACCG.g.AAAG',
90  'gi|30260185|gb|AE016879.1| Bacillus anthracis str. Ames, complete genome',
91  '5.61e-05'],
92 ['30260185','3710524','3710553',-1,'TTTT.aaatg-.TAGTC.CTGTGA.GGCTG.c.CAAA',
93  'gi|30260185|gb|AE016879.1| Bacillus anthracis str. Ames, complete genome',
94  '1.31e-04'],
95 ['30260185','3711223','3711251',-1,'CTTT.aaca--.CAGCC.CCGTGA.GGTTG.a.GAAG',
96  'gi|30260185|gb|AE016879.1| Bacillus anthracis str. Ames, complete genome',
97  '4.44e-06']
100 $parser = Bio::Tools::ERPIN->new(
101                         -verbose => $verbose,
102             -file => test_input_file('testfile.erpin'),
103             -motiftag => 'protein_bind',
104                         -desctag =>  'pyrR_BL');
106 while( my $gene = $parser->next_prediction ) {
107         my @stats = @{ shift @erpinstats };
108         is($gene->display_name, 'pyrR_BL','ERPIN::display_name()');
109         is($gene->seq_id, shift @stats,'ERPIN::seq_id()');
110         is($gene->primary_tag, 'protein_bind','ERPIN::primary_tag()');
111         is($gene->start, shift @stats,'ERPIN::start()');
112         is($gene->end, shift @stats,'ERPIN::end()');
113         is($gene->strand, shift @stats,'ERPIN::strand()');
114         ($val) = $gene->get_tag_values('sequence');
115         is($val, shift @stats, "ERPIN::get_tag_values('sequence')");
116         eval {($val) = $gene->get_tag_values('descfile')}; # no descfile
117         like($@, qr(asking for tag value that does not exist descfile));
118         ($val) = $gene->get_tag_values('descline'); 
119         is($val, shift @stats, "ERPIN::get_tag_values('descline')");
120         eval {($val) = $gene->get_tag_values('secstructure')}; # no secstructure 
121         like($@, qr(asking for tag value that does not exist secstructure));
122         is($gene->score, shift @stats,'ERPIN::score()');
123         is($gene->source_tag, 'ERPIN','ERPIN::source_tag()');
126 ### Infernal.pm tests ###
128 my @stats = (
129 ['30260185','5181155','5181183',1,'CTTT.aacc--.CAACC.CCGTGA.GGTTG.a.GAAG',0,
130  'gi|30260185|gb|AE016879.1| Bacillus anthracis str. Ames, complete genome',
131  0,'1.68e-05'],
132 ['30260185','3709092','3709121',-1,'CTTT.taatt-.CAGTC.CTGTGA.GACCG.g.AAAG',0,
133  'gi|30260185|gb|AE016879.1| Bacillus anthracis str. Ames, complete genome',
134  0,'5.61e-05'],
135 ['30260185','3710524','3710553',-1,'TTTT.aaatg-.TAGTC.CTGTGA.GGCTG.c.CAAA',0,
136  'gi|30260185|gb|AE016879.1| Bacillus anthracis str. Ames, complete genome',
137  0,'1.31e-04'],
138 ['30260185','3711223','3711251',-1,'CTTT.aaca--.CAGCC.CCGTGA.GGTTG.a.GAAG',0,
139  'gi|30260185|gb|AE016879.1| Bacillus anthracis str. Ames, complete genome',
140  0,'4.44e-06']
143 $parser = Bio::Tools::Infernal->new(
144             -file => test_input_file('test.infernal'),
145             -motiftag => 'misc_binding',
146             -desctag => 'Purine riboswitch',
147             -cm    => 'Purine',
148             -rfam  =>  'RF00167',
149             -minscore => 20);
151 my $gene = $parser->next_prediction;
152 # get query (model) data
153 is($gene->display_name, 'Purine riboswitch','Infernal::display_name()');
154 is($gene->seq_id, 'RF00167','Infernal::seq_id()');
155 is($gene->primary_tag, 'misc_binding','Infernal::primary_tag()');
156 is($gene->source_tag, 'Infernal 0.71','Infernal::source_tag()');
157 is($gene->start, '1','Infernal::start()');
158 is($gene->end, '102','Infernal::end()');
159 is($gene->strand, '0','Infernal::strand()');
160 is($gene->score, '78.40','Infernal::strand()');
161 # get hit data
162 $gene->invert;
163 is($gene->display_name, 'Purine riboswitch','Infernal::display_name()');
164 is($gene->seq_id, '2239287','Infernal::seq_id()');
165 is($gene->primary_tag, 'misc_binding','Infernal::primary_tag()');
166 is($gene->source_tag, 'Infernal 0.71','Infernal::source_tag()');
167 is($gene->start, '15589','Infernal::start()');
168 is($gene->end, '15691','Infernal::end()');
169 is($gene->strand, '1','Infernal::strand()');
170 is($gene->score, '78.40','Infernal::strand()');
171 ($val) = $gene->get_tag_values('model');
172 is($val,
173    'aAaaauaaAaaaaaaaauaCuCgUAUAaucucgggAAUAUGGcccgagaGUuUCUACCaGgcaaCCGUAAAuugcCuGACUAcG.aGuaAauauuaaauauuu',
174    "Infernal::get_tag_values('model')");
175 ($val) = $gene->get_tag_values('midline');
176 is($val,
177    ' A+ A+A+ AAAA A   :CUC:UAUAAU: :GGGAAUAUGGCCC: :AGUUUCUACC:GGCAACCGUAAAUUGCC:GACUA:G AG: AA + ++  +++++',
178    "Infernal::get_tag_values('midline')");
179 ($val) = $gene->get_tag_values('hit');
180 is($val,
181    'CAUGAAAUCAAAACACGACCUCAUAUAAUCUUGGGAAUAUGGCCCAUAAGUUUCUACCCGGCAACCGUAAAUUGCCGGACUAUGcAGGGAAGUGAUCGAUAAA',
182    "Infernal::get_tag_values('hit')");
183 ($val) = $gene->get_tag_values('secstructure');
184 is($val,
185    ':::::::::::::::::((((((((,,,<<<<<<<_______>>>>>>>,,,,,,,,<<<<<<<_______>>>>>>>,,)))).))))::::::::::::::',
186    "Infernal::get_tag_values('secstructure')");
187 ($val) = $gene->get_tag_values('seq_name'),
188 is($val, 'gi|2239287|gb|U51115.1|BSU51115',
189    "Infernal::get_tag_values('seq_name')");
191 $gene = $parser->next_prediction;
192 # get query (model) data
193 is($gene->display_name, 'Purine riboswitch','Infernal::display_name()');
194 is($gene->seq_id, 'RF00167','Infernal::seq_id()');
195 is($gene->primary_tag, 'misc_binding','Infernal::primary_tag()');
196 is($gene->source_tag, 'Infernal 0.71','Infernal::source_tag()');
197 is($gene->start, '1','Infernal::start()');
198 is($gene->end, '102','Infernal::end()');
199 is($gene->strand, '0','Infernal::strand()');
200 is($gene->score, '81.29','Infernal::strand()');
202 $gene->invert; # switch to get hit data
203 is($gene->display_name, 'Purine riboswitch','Infernal::display_name()');
204 is($gene->seq_id, '2239287','Infernal::seq_id()');
205 is($gene->primary_tag, 'misc_binding','Infernal::primary_tag()');
206 is($gene->source_tag, 'Infernal 0.71','Infernal::source_tag()');
207 is($gene->start, '11655','Infernal::start()');
208 is($gene->end, '11756','Infernal::end()');
209 is($gene->strand, '1','Infernal::strand()');
210 is($gene->score, '81.29','Infernal::strand()');
211 ($val) = $gene->get_tag_values('model');
212 is($val,
213    'aAaaauaaAaaaaaaaauaCuCgUAUAaucucgggAAUAUGGcccgagaGUuUCUACCaGgcaaCCGUAAAuugcCuGACUAcGaGuaAauauuaaauauuu',
214    "Infernal::get_tag_values('model')");
215 ($val) = $gene->get_tag_values('midline');
216 is($val,
217    'A AAAU AAA+AA A+   : CGUAUAAU::CG:GAAUAUGGC:CG::AGU UCUACCA:GC ACCGUAAAU GC:UGACUACG :   AU+U +++  UUU',
218    "Infernal::get_tag_values('midline')");
219 ($val) = $gene->get_tag_values('hit');
220 is($val,
221    'AGAAAUCAAAUAAGAUGAAUUCGUAUAAUCGCGGGAAUAUGGCUCGCAAGUCUCUACCAAGCUACCGUAAAUGGCUUGACUACGUAAACAUUUCUUUCGUUU',
222    "Infernal::get_tag_values('hit')");
223 ($val) = $gene->get_tag_values('secstructure');
224 is($val,
225    ':::::::::::::::::((((((((,,,<<<<<<<_______>>>>>>>,,,,,,,,<<<<<<<_______>>>>>>>,,))))))))::::::::::::::',
226    "Infernal::get_tag_values('secstructure')");
227 ($val) = $gene->get_tag_values('seq_name');
228 is($val,
229    'gi|2239287|gb|U51115.1|BSU51115',
230    "Infernal::get_tag_values('seq_name')");