1 # -*-Perl-*- Test Harness script for Bioperl
9 test_begin(-tests => 66);
11 use_ok('Bio::Tools::TandemRepeatsFinder');
14 # first, open empty output file
15 # make sure no results get returned
17 Bio::Tools::TandemRepeatsFinder->new( -file => test_input_file('tandem_repeats_finder.noresults')
19 ok $trf,"Parser created successfully" ;
20 my $feat = $trf->next_result;
21 ok( !defined($feat), "empty results file correctly returns no results" );
24 # now check some results
26 Bio::Tools::TandemRepeatsFinder->new( -file => test_input_file('tandem_repeats_finder.dat')
28 ok $trf,"Second parser created successfully" ;
29 my $feat1 = $trf->next_result();
31 # these are the parameters that should be parsed from
33 # Parameters: 2 7 7 80 10 50 12
34 my $expected_run_parameters = {
44 # test feature properties
45 is ( $feat1->seq_id(), "DDB0169550", "seq_id for first result correctly parsed");
46 is ( $feat1->start(), 13936, "start for first result correctly parsed");
47 is ( $feat1->end(), 13960, "end for first result correctly parsed");
48 is ( $feat1->source_tag(), 'Tandem Repeats Finder', "source tag for first result correctly parsed");
49 is ( $feat1->primary_tag(), 'tandem repeat', "primary tag for first result correctly parsed");
50 is ( $feat1->score(), 50, "score for first result correctly parsed");
53 # all of the data other than start, end, score, and seq_id
55 my ($seqence_description) = $feat1->get_tag_values( 'sequence_description' );
56 is ( $seqence_description, "|Masked Chromosomal Sequence| on chromosome: M", "sequence description correctly parsed.");
57 my ($parameters) = $feat1->get_tag_values( 'run_parameters' );
58 is_deeply ( $parameters, $expected_run_parameters ,"correctly parsed all run parameters");
59 my ($period_size) = $feat1->get_tag_values( 'period_size' );
60 is ( $period_size, 12 ,"correctly parsed period_size for first result");
61 my ($copy_number) = $feat1->get_tag_values( 'copy_number' );
62 is ( $copy_number, 2.1 ,"correctly parsed copy_number for first result");
63 my ($consensus_size) = $feat1->get_tag_values( 'consensus_size' );
64 is ( $consensus_size, 12 ,"correctly parsed consensus_size for first result");
65 my ($percent_matches) = $feat1->get_tag_values( 'percent_matches' );
66 is ( $percent_matches, 100 ,"correctly parsed percent_matches for first result");
67 my ($percent_indels) = $feat1->get_tag_values( 'percent_indels' );
68 is ( $percent_indels, 0 ,"correctly parsed percent_indels for first result");
69 my ($percent_a) = $feat1->get_tag_values( 'percent_a' );
70 is ( $percent_a, 16 ,"correctly parsed percent_a for first result");
71 my ($percent_c) = $feat1->get_tag_values( 'percent_c' );
72 is ( $percent_c, 8 ,"correctly parsed percent_c for first result");
73 my ($percent_g) = $feat1->get_tag_values( 'percent_g' );
74 is ( $percent_g, 52 ,"correctly parsed percent_g for first result");
75 my ($percent_t) = $feat1->get_tag_values( 'percent_t' );
76 is ( $percent_t, 24 ,"correctly parsed percent_t for first result");
77 my ($entropy) = $feat1->get_tag_values( 'entropy' );
78 is ( $entropy, "1.70", "correctly parsed entropy for first result");
79 my ($repeat_sequence) = $feat1->get_tag_values( 'repeat_sequence' );
80 is ( $repeat_sequence, "GGCGTAATGGGTGGCGTAATGGGTG", "correctly parsed repeat_sequence for first result");
81 my ($consensus_sequence) = $feat1->get_tag_values( 'consensus_sequence' );
82 is ( $consensus_sequence, "GGCGTAATGGGT", "correctly parsed consensus_sequence for first result");
84 # for the next result just check the sequence _id, start, and end
85 my $feat2 = $trf->next_result();
86 is ( $feat2->seq_id(), "DDB0169550", "seq_id for second result correctly parsed");
87 is ( $feat2->start(), "16937", "start for second result correctly parsed");
88 is ( $feat2->end(), "16965", "end for second result correctly parsed");
89 is ( $feat2->source_tag(), 'Tandem Repeats Finder', "source tag for first result correctly parsed");
90 is ( $feat2->primary_tag(), 'tandem repeat', "primary tag for first result correctly parsed");
91 is ( $feat2->score(), 58, "score for first result correctly parsed");
94 # all of the data other than start, end, score, and seq_id
96 ($seqence_description) = $feat2->get_tag_values( 'sequence_description' );
97 is ( $seqence_description, "|Masked Chromosomal Sequence| on chromosome: M", "sequence description correctly parsed.");
99 ($parameters) = $feat2->get_tag_values( 'run_parameters' );
100 is_deeply ( $parameters, $expected_run_parameters ,"correctly reatained all run parameters for second feature");
101 ($period_size) = $feat2->get_tag_values( 'period_size' );
102 is ( $period_size, 9 ,"correctly parsed period_size for second result");
103 ($copy_number) = $feat2->get_tag_values( 'copy_number' );
104 is ( $copy_number, "3.2" ,"correctly parsed copy_number for second result");
105 ($consensus_size) = $feat2->get_tag_values( 'consensus_size' );
106 is ( $consensus_size, 9 ,"correctly parsed consensus_size for second result");
107 ($percent_matches) = $feat2->get_tag_values( 'percent_matches' );
108 is ( $percent_matches, 100 ,"correctly parsed percent_matches for second result");
109 ($percent_indels) = $feat2->get_tag_values( 'percent_indels' );
110 is ( $percent_indels, 0 ,"correctly parsed percent_indels for second result");
111 ($percent_a) = $feat2->get_tag_values( 'percent_a' );
112 is ( $percent_a, 44 ,"correctly parsed percent_a for second result");
113 ($percent_c) = $feat2->get_tag_values( 'percent_c' );
114 is ( $percent_c, 0 ,"correctly parsed percent_c for second result");
115 ($percent_g) = $feat2->get_tag_values( 'percent_g' );
116 is ( $percent_g, 10 ,"correctly parsed percent_g for second result");
117 ($percent_t) = $feat2->get_tag_values( 'percent_t' );
118 is ( $percent_t, 44 ,"correctly parsed percent_t for second result");
119 ($entropy) = $feat2->get_tag_values( 'entropy' );
120 is ( $entropy, "1.38", "correctly parsed entropy for second result");
121 ($repeat_sequence) = $feat2->get_tag_values( 'repeat_sequence' );
122 is ( $repeat_sequence, "TATATAGTATATATAGTATATATAGTATA", "correctly parsed repeat_sequence for second result");
123 ($consensus_sequence) = $feat2->get_tag_values( 'consensus_sequence' );
124 is ( $consensus_sequence, "TATATAGTA", "correctly parsed consensus_sequence for second result");
126 # now, check the full results again for last result (on a different sequence).
127 my $feat3 = $trf->next_result();
128 # test feature properties
129 is ( $feat3->seq_id(), "DDB0215018", "seq_id for first result correctly parsed");
130 is ( $feat3->start(), 1649, "start for first result correctly parsed");
131 is ( $feat3->end(), 1679, "end for first result correctly parsed");
132 is ( $feat3->source_tag(), 'Tandem Repeats Finder', "source tag for first result correctly parsed");
133 is ( $feat3->primary_tag(), 'tandem repeat', "primary tag for first result correctly parsed");
134 is ( $feat3->score(), 62, "score for first result correctly parsed");
137 # all of the data other than start, end, score, and seq_id
139 ($seqence_description) = $feat3->get_tag_values( 'sequence_description' );
140 is ( $seqence_description, "|Masked Chromosomal Sequence| on chromosome: 2F", "sequence description correctly parsed.");
142 ($parameters) = $feat3->get_tag_values( 'run_parameters' );
143 is_deeply ( $parameters, $expected_run_parameters ,"correctly reatained all run parameters for third feature");
144 ($period_size) = $feat3->get_tag_values( 'period_size' );
145 is ( $period_size, 1 ,"correctly parsed period_size for third result");
146 ($copy_number) = $feat3->get_tag_values( 'copy_number' );
147 is ( $copy_number, "31.0" ,"correctly parsed copy_number for third result");
148 ($consensus_size) = $feat3->get_tag_values( 'consensus_size' );
149 is ( $consensus_size, 1 ,"correctly parsed consensus_size for third result");
150 ($percent_matches) = $feat3->get_tag_values( 'percent_matches' );
151 is ( $percent_matches, 100 ,"correctly parsed percent_matches for third result");
152 ($percent_indels) = $feat3->get_tag_values( 'percent_indels' );
153 is ( $percent_indels, 0 ,"correctly parsed percent_indels for third result");
154 ($percent_a) = $feat3->get_tag_values( 'percent_a' );
155 is ( $percent_a, 0 ,"correctly parsed percent_a for third result");
156 ($percent_c) = $feat3->get_tag_values( 'percent_c' );
157 is ( $percent_c, 0 ,"correctly parsed percent_c for third result");
158 ($percent_g) = $feat3->get_tag_values( 'percent_g' );
159 is ( $percent_g, 0 ,"correctly parsed percent_g for third result");
160 ($percent_t) = $feat3->get_tag_values( 'percent_t' );
161 is ( $percent_t, 100 ,"correctly parsed percent_t for third result");
162 ($entropy) = $feat3->get_tag_values( 'entropy' );
163 is ( $entropy, "0.00", "correctly parsed entropy for third result");
164 ($repeat_sequence) = $feat3->get_tag_values( 'repeat_sequence' );
165 is ( $repeat_sequence, "TTTTTTTTTTTTTTTTTTTTTTTTTTTTTTT", "correctly parsed repeat_sequence for third result");
166 ($consensus_sequence) = $feat3->get_tag_values( 'consensus_sequence' );
167 is ( $consensus_sequence, "T", "correctly parsed consensus_sequence for third result");
169 my $empty_feat = $trf->next_result();
170 ok( !defined($empty_feat), "correctly return undef when no features are left" );
174 Bio::Tools::TandemRepeatsFinder->new( -file => test_input_file('tandem_repeats_finder_no_desc.dat')
177 my $feat_with_seqid = $trf->next_result();
178 #ensuring that we can parse out seq_id in the file even in the absent of description
179 is( $feat_with_seqid->seq_id(),"DDB0169550", "Correctly parsed seq_id even if description does not exist" );