annotate variant_effect_predictor/Bio/AlignIO/emboss.pm @ 0:2bc9b66ada89 draft default tip

Uploaded
author mahtabm
date Thu, 11 Apr 2013 06:29:17 -0400
parents
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
0
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
1 # $Id: emboss.pm,v 1.11 2002/10/22 07:45:10 lapp Exp $
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
2 #
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
3 # BioPerl module for Bio::AlignIO::emboss
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
4 #
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
5 # Cared for by Jason Stajich <jason@bioperl.org>
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
6 #
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
7 # Copyright Jason Stajich
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
8 #
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
9 # You may distribute this module under the same terms as perl itself
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
10
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
11 # POD documentation - main docs before the code
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
12
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
13 =head1 NAME
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
14
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
15 Bio::AlignIO::emboss - Parse EMBOSS alignment output (from applications water and needle)
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
16
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
17 =head1 SYNOPSIS
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
18
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
19 # do not use the object directly
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
20 use Bio::AlignIO;
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
21 # read in an alignment from the EMBOSS program water
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
22 my $in = new Bio::AlignIO(-format => 'emboss',
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
23 -file => 'seq.water');
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
24 while( my $aln = $in->next_aln ) {
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
25 # do something with the alignment
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
26 }
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
27
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
28 =head1 DESCRIPTION
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
29
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
30 This object handles parsing and writing pairwise sequence alignments
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
31 from the EMBOSS suite.
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
32
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
33 =head1 FEEDBACK
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
34
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
35 =head2 Mailing Lists
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
36
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
37 User feedback is an integral part of the evolution of this and other
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
38 Bioperl modules. Send your comments and suggestions preferably to
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
39 the Bioperl mailing list. Your participation is much appreciated.
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
40
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
41 bioperl-l@bioperl.org - General discussion
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
42 http://bioperl.org/MailList.shtml - About the mailing lists
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
43
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
44 =head2 Reporting Bugs
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
45
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
46 Report bugs to the Bioperl bug tracking system to help us keep track
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
47 of the bugs and their resolution. Bug reports can be submitted via
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
48 email or the web:
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
49
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
50 bioperl-bugs@bioperl.org
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
51 http://bugzilla.bioperl.org/
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
52
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
53 =head1 AUTHOR - Jason Stajich
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
54
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
55 Email jason@bioperl.org
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
56
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
57 Describe contact details here
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
58
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
59 =head1 CONTRIBUTORS
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
60
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
61 Additional contributors names and emails here
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
62
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
63 =head1 APPENDIX
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
64
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
65 The rest of the documentation details each of the object methods.
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
66 Internal methods are usually preceded with a _
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
67
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
68 =cut
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
69
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
70
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
71 # Let the code begin...
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
72
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
73
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
74 package Bio::AlignIO::emboss;
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
75 use vars qw(@ISA $EMBOSSTitleLen $EMBOSSLineLen);
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
76 use strict;
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
77
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
78 use Bio::AlignIO;
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
79 use Bio::LocatableSeq;
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
80
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
81 @ISA = qw(Bio::AlignIO );
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
82
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
83 BEGIN {
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
84 $EMBOSSTitleLen = 13;
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
85 $EMBOSSLineLen = 50;
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
86 }
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
87
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
88 sub _initialize {
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
89 my($self,@args) = @_;
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
90 $self->SUPER::_initialize(@args);
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
91 $self->{'_type'} = undef;
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
92 }
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
93
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
94 =head2 next_aln
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
95
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
96 Title : next_aln
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
97 Usage : $aln = $stream->next_aln()
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
98 Function: returns the next alignment in the stream.
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
99 Returns : L<Bio::Align::AlignI> object - returns 0 on end of file
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
100 or on error
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
101 Args : NONE
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
102
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
103 =cut
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
104
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
105 sub next_aln {
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
106 my ($self) = @_;
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
107 my $seenbegin = 0;
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
108 my %data = ( 'seq1' => {
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
109 'start'=> undef,
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
110 'end'=> undef,
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
111 'name' => '',
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
112 'data' => '' },
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
113 'seq2' => {
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
114 'start'=> undef,
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
115 'end'=> undef,
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
116 'name' => '',
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
117 'data' => '' },
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
118 'align' => '',
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
119 'type' => $self->{'_type'}, # to restore type from
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
120 # previous aln if possible
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
121 );
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
122 my %names;
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
123 while( defined($_ = $self->_readline) ) {
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
124 next if( /^\#?\s+$/ || /^\#+\s*$/ );
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
125 if( /^\#(\=|\-)+\s*$/) {
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
126 last if( $seenbegin);
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
127 } elsif( /(Local|Global):\s*(\S+)\s+vs\s+(\S+)/ ||
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
128 /^\#\s+Program:\s+(\S+)/ )
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
129 {
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
130 my ($name1,$name2) = ($2,$3);
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
131 if( ! defined $name1 ) { # Handle EMBOSS 2.2.X
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
132 $data{'type'} = $1;
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
133 $name1 = $name2 = '';
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
134 } else {
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
135 $data{'type'} = $1 eq 'Local' ? 'water' : 'needle';
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
136 }
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
137 $data{'seq1'}->{'name'} = $name1;
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
138 $data{'seq2'}->{'name'} = $name2;
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
139
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
140 $self->{'_type'} = $data{'type'};
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
141
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
142 } elsif( /Score:\s+(\S+)/ ) {
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
143 $data{'score'} = $1;
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
144 } elsif( /^\#\s+(1|2):\s+(\S+)/ && ! $data{"seq$1"}->{'name'} ) {
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
145 my $nm = $2;
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
146 $nm = substr($nm,0,$EMBOSSTitleLen); # emboss has a max seq length
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
147 if( $names{$nm} ) {
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
148 $nm .= "-". $names{$nm};
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
149 }
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
150 $names{$nm}++;
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
151 $data{"seq$1"}->{'name'} = $nm;
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
152 } elsif( $data{'seq1'}->{'name'} &&
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
153 /^$data{'seq1'}->{'name'}/ ) {
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
154 my $count = 0;
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
155 $seenbegin = 1;
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
156 my @current;
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
157 while( defined ($_) ) {
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
158 my $align_other = '';
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
159 my $delayed;
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
160 if($count == 0 || $count == 2 ) {
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
161 my @l = split;
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
162 my ($seq,$align,$start,$end);
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
163 if( $count == 2 && $data{'seq2'}->{'name'} eq '' ) {
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
164 # weird boundary condition
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
165 ($start,$align,$end) = @l;
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
166 } elsif( @l == 3 ) {
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
167 $align = '';
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
168 ($seq,$start,$end) = @l
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
169 } else {
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
170 ($seq,$start,$align,$end) = @l;
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
171 }
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
172
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
173 my $seqname = sprintf("seq%d", ($count == 0) ? '1' : '2');
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
174 $data{$seqname}->{'data'} .= $align;
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
175 $data{$seqname}->{'start'} ||= $start;
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
176 $data{$seqname}->{'end'} = $end;
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
177 $current[$count] = [ $start,$align || ''];
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
178 } else {
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
179 s/^\s+//;
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
180 s/\s+$//;
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
181 $data{'align'} .= $_;
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
182 }
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
183
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
184 BOTTOM:
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
185 last if( $count++ == 2);
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
186 $_ = $self->_readline();
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
187 }
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
188
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
189 if( $data{'type'} eq 'needle' ) {
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
190 # which ever one is shorter we want to bring it up to
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
191 # length. Man this stinks.
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
192 my ($s1,$s2) = ($data{'seq1'}, $data{'seq2'});
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
193
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
194 my $d = length($current[0]->[1]) - length($current[2]->[1]);
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
195 if( $d < 0 ) { # s1 is smaller, need to add some
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
196 # compare the starting points for this alignment line
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
197 if( $current[0]->[0] <= 1 && $current[2]->[0] > 1) {
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
198 $s1->{'data'} = ('-' x abs($d)) . $s1->{'data'};
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
199 $data{'align'} = (' 'x abs($d)).$data{'align'};
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
200 } else {
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
201 $s1->{'data'} .= '-' x abs($d);
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
202 $data{'align'} .= ' 'x abs($d);
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
203 }
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
204 } elsif( $d > 0) { # s2 is smaller, need to add some
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
205 if( $current[2]->[0] <= 1 && $current[0]->[0] > 1) {
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
206 $s2->{'data'} = ('-' x abs($d)) . $s2->{'data'};
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
207 $data{'align'} = (' 'x abs($d)).$data{'align'};
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
208 } else {
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
209 $s2->{'data'} .= '-' x abs($d);
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
210 $data{'align'} .= ' 'x abs($d);
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
211 }
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
212 }
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
213 }
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
214
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
215 }
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
216 }
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
217 return undef unless $seenbegin;
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
218 my $aln = Bio::SimpleAlign->new(-verbose => $self->verbose(),
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
219 -source => "EMBOSS-".$data{'type'});
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
220
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
221 foreach my $seqname ( qw(seq1 seq2) ) {
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
222 return undef unless ( defined $data{$seqname} );
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
223 $data{$seqname}->{'name'} ||= $seqname;
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
224 my $seq = new Bio::LocatableSeq('-seq' => $data{$seqname}->{'data'},
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
225 '-id' => $data{$seqname}->{'name'},
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
226 '-start'=> $data{$seqname}->{'start'},
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
227 '-end' => $data{$seqname}->{'end'},
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
228 );
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
229 $aln->add_seq($seq);
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
230 }
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
231 return $aln;
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
232 }
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
233
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
234 =head2 write_aln
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
235
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
236 Title : write_aln
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
237 Usage : $stream->write_aln(@aln)
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
238 Function: writes the $aln object into the stream in emboss format
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
239 Returns : 1 for success and 0 for error
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
240 Args : L<Bio::Align::AlignI> object
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
241
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
242
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
243 =cut
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
244
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
245 sub write_aln {
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
246 my ($self,@aln) = @_;
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
247
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
248 $self->throw("Sorry: writing emboss output is not currently available! \n");
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
249 }
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
250
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
251 1;