comparison variant_effect_predictor/Bio/SeqIO/pln.pm @ 0:1f6dce3d34e0

Uploaded
author mahtabm
date Thu, 11 Apr 2013 02:01:53 -0400
parents
children
comparison
equal deleted inserted replaced
-1:000000000000 0:1f6dce3d34e0
1 # $Id: pln.pm,v 1.7 2002/10/22 07:38:42 lapp Exp $
2 # BioPerl module for Bio::SeqIO::pln
3 #
4 # Cared for by Aaron Mackey <amackey@virginia.edu>
5 #
6 # Copyright Aaron Mackey
7 #
8 # You may distribute this module under the same terms as perl itself
9
10 # POD documentation - main docs before the code
11
12 =head1 NAME
13
14 Bio::SeqIO::pln - pln trace sequence input/output stream
15
16 =head1 SYNOPSIS
17
18 Do not use this module directly. Use it via the Bio::SeqIO class.
19
20 =head1 DESCRIPTION
21
22 This object can transform Bio::Seq objects to and from pln trace
23 files.
24
25 =head1 FEEDBACK
26
27 =head2 Mailing Lists
28
29 User feedback is an integral part of the evolution of this and other
30 Bioperl modules. Send your comments and suggestions preferably to one
31 of the Bioperl mailing lists. Your participation is much appreciated.
32
33 bioperl-l@bioperl.org - General discussion
34 http://bioperl.org/MailList.shtml - About the mailing lists
35
36 =head2 Reporting Bugs
37
38 Report bugs to the Bioperl bug tracking system to help us keep track
39 the bugs and their resolution.
40 Bug reports can be submitted via email or the web:
41
42 bioperl-bugs@bio.perl.org
43 http://bugzilla.bioperl.org/
44
45 =head1 AUTHORS - Aaron Mackey
46
47 Email: amackey@virginia.edu
48
49 =head1 APPENDIX
50
51 The rest of the documentation details each of the object
52 methods. Internal methods are usually preceded with a _
53
54 =cut
55
56 # Let the code begin...
57
58 package Bio::SeqIO::pln;
59 use vars qw(@ISA $READ_AVAIL);
60 use strict;
61 # Object preamble - inherits from Bio::Root::Object
62
63 use Bio::SeqIO;
64 use Bio::Seq::SeqFactory;
65
66 push @ISA, qw( Bio::SeqIO );
67
68 sub BEGIN {
69 eval { require Bio::SeqIO::staden::read; };
70 if ($@) {
71 $READ_AVAIL = 0;
72 } else {
73 push @ISA, "Bio::SeqIO::staden::read";
74 $READ_AVAIL = 1;
75 }
76 }
77
78 sub _initialize {
79 my($self,@args) = @_;
80 $self->SUPER::_initialize(@args);
81 if( ! defined $self->sequence_factory ) {
82 $self->sequence_factory(new Bio::Seq::SeqFactory(-verbose => $self->verbose(), -type => 'Bio::Seq'));
83 }
84 unless ($READ_AVAIL) {
85 Bio::Root::Root->throw( -class => 'Bio::Root::SystemException',
86 -text => "Bio::SeqIO::staden::read is not available; make sure the bioperl-ext package has been installed successfully!"
87 );
88 }
89 }
90
91 =head2 next_seq
92
93 Title : next_seq
94 Usage : $seq = $stream->next_seq()
95 Function: returns the next sequence in the stream
96 Returns : Bio::SeqWithQuality object
97 Args : NONE
98
99 =cut
100
101 sub next_seq {
102
103 my ($self) = @_;
104
105 my ($seq, $id, $desc, $qual) = $self->read_trace($self->_fh, 'pln');
106
107 # create the seq object
108 $seq = $self->sequence_factory->create(-seq => $seq,
109 -id => $id,
110 -primary_id => $id,
111 -desc => $desc,
112 -alphabet => 'DNA',
113 -qual => $qual
114 );
115 return $seq;
116 }
117
118 =head2 write_seq
119
120 Title : write_seq
121 Usage : $stream->write_seq(@seq)
122 Function: writes the $seq object into the stream
123 Returns : 1 for success and 0 for error
124 Args : Bio::Seq object
125
126
127 =cut
128
129 sub write_seq {
130 my ($self,@seq) = @_;
131
132 my $fh = $self->_fh;
133 foreach my $seq (@seq) {
134 $self->write_trace($fh, $seq, 'pln');
135 }
136
137 $self->flush if $self->_flush_on_write && defined $self->_fh;
138 return 1;
139 }
140
141 1;