File Coverage

Bio/AlignIO/mase.pm
Criterion Covered Total %
statement 35 42 83.3
branch 8 12 66.6
condition n/a
subroutine 3 4 75.0
pod 2 2 100.0
total 48 60 80.0


line stmt bran cond sub pod time code
1             #
2             # BioPerl module for Bio::AlignIO::mase
3              
4             # based on the Bio::SeqIO::mase module
5             # by Ewan Birney
6             # and Lincoln Stein
7             #
8             # and the SimpleAlign.pm module of Ewan Birney
9             #
10             # Copyright Peter Schattner
11             #
12             # You may distribute this module under the same terms as perl itself
13             # _history
14             # September 5, 2000
15             # POD documentation - main docs before the code
16              
17             =head1 NAME
18              
19             Bio::AlignIO::mase - mase sequence input/output stream
20              
21             =head1 SYNOPSIS
22              
23             Do not use this module directly. Use it via the L class.
24              
25             =head1 DESCRIPTION
26              
27             This object can transform L objects to and from mase flat
28             file databases.
29              
30             =head1 FEEDBACK
31              
32             =head2 Support
33              
34             Please direct usage questions or support issues to the mailing list:
35              
36             I
37              
38             rather than to the module maintainer directly. Many experienced and
39             reponsive experts will be able look at the problem and quickly
40             address it. Please include a thorough description of the problem
41             with code and data examples if at all possible.
42              
43             =head2 Reporting Bugs
44              
45             Report bugs to the Bioperl bug tracking system to help us keep track
46             the bugs and their resolution. Bug reports can be submitted via the
47             web:
48              
49             https://github.com/bioperl/bioperl-live/issues
50              
51             =head1 AUTHORS - Peter Schattner
52              
53             Email: schattner@alum.mit.edu
54              
55              
56             =head1 APPENDIX
57              
58             The rest of the documentation details each of the object
59             methods. Internal methods are usually preceded with a _
60              
61             =cut
62              
63             # Let the code begin...
64              
65             package Bio::AlignIO::mase;
66 3     3   387 use strict;
  3         8  
  3         96  
67              
68              
69 3     3   14 use base qw(Bio::AlignIO);
  3         6  
  3         1089  
70              
71              
72             =head2 next_aln
73              
74             Title : next_aln
75             Usage : $aln = $stream->next_aln()
76             Function: returns the next alignment in the stream.
77             Returns : L object
78             Args : NONE
79              
80             =cut
81              
82             sub next_aln {
83 3     3 1 44 my $self = shift;
84 3         16 my $entry;
85             my $name;
86 3         0 my $start;
87 3         0 my $end;
88 3         0 my $seq;
89 3         0 my $add;
90 3         6 my $count = 0;
91 3         5 my $seq_residues;
92              
93 3         1905 my $aln = Bio::SimpleAlign->new(-source => 'mase');
94              
95              
96 3         23 while( $entry = $self->_readline) {
97 21 100       54 $entry =~ /^;/ && next;
98 6 50       19 if( $entry =~ /^(\S+)\/(\d+)-(\d+)/ ) {
99 0         0 $name = $1;
100 0         0 $start = $2;
101 0         0 $end = $3;
102             } else {
103 6         24 $entry =~ s/\s//g;
104 6         11 $name = $entry;
105 6         8 $end = -1;
106             }
107              
108 6         7 $seq = "";
109              
110 6         14 while( $entry = $self->_readline) {
111 45 100       71 $entry =~ /^;/ && last;
112 42         118 $entry =~ s/[^A-Za-z\.\-]//g;
113 42         82 $seq .= $entry;
114             }
115 6 50       20 if( $end == -1) {
116 6         70 $start = 1;
117              
118 6         33 $seq_residues = $seq;
119 6         129 $seq_residues =~ s/\W//g;
120 6         10 $end = length($seq_residues);
121             }
122              
123 6         20 $add = Bio::LocatableSeq->new('-seq' => $seq,
124             '-display_id' => $name,
125             '-start' => $start,
126             '-end' => $end,
127             '-alphabet' => $self->alphabet,
128             );
129              
130              
131 6         23 $aln->add_seq($add);
132              
133              
134             # If $end <= 0, we have either reached the end of
135             # file in <> or we have encountered some other error
136             #
137 6 50       20 if ($end <= 0) { undef $aln;}
  0         0  
138              
139             }
140              
141 3 50       33 return $aln if $aln->num_sequences;
142 0           return;
143             }
144              
145              
146              
147             =head2 write_aln
148              
149             Title : write_aln
150             Usage : $stream->write_aln(@aln)
151             Function: writes the $aln object into the stream in mase format ###Not yet implemented!###
152             Returns : 1 for success and 0 for error
153             Args : L object
154              
155              
156             =cut
157              
158             sub write_aln {
159 0     0 1   my ($self,@aln) = @_;
160 0           $self->throw_not_implemented();
161             }
162              
163             1;