annotate variant_effect_predictor/Bio/ClusterIO.pm @ 1:d6778b5d8382 draft default tip

Deleted selected files
author willmclaren
date Fri, 03 Aug 2012 10:05:43 -0400
parents 21066c0abaf5
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
0
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1 # $Id: ClusterIO.pm,v 1.11.2.1 2003/01/21 01:11:17 jason Exp $
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
2 #
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
3 # BioPerl module for Bio::ClusterIO.pm
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
4 #
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
5 # Cared for by Andrew Macgregor <andrew@anatomy.otago.ac.nz>
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
6 #
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
7 # Copyright Andrew Macgregor, Jo-Ann Stanton, David Green
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
8 # Molecular Embryology Group, Anatomy & Structural Biology, University of Otago
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
9 # http://anatomy.otago.ac.nz/meg
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
10 #
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
11 # You may distribute this module under the same terms as perl itself
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
12 #
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
13 # _history
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
14 #
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
15 # May 7, 2002 - changed from UniGene.pm to more generic ClusterIO.pm
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
16 # by Andrew Macgregor
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
17 #
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
18 # April 17, 2002 - Initial implementation by Andrew Macgregor
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
19 # POD documentation - main docs before the code
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
20
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
21 =head1 NAME
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
22
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
23 Bio::ClusterIO - Handler for Cluster Formats
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
24
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
25 =head1 SYNOPSIS
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
26
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
27 #NB: This example is unigene specific
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
28
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
29 use Bio::ClusterIO;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
30
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
31 $stream = Bio::ClusterIO->new('-file' => "Hs.data",
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
32 '-format' => "unigene");
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
33 # note: we quote -format to keep older perl's from complaining.
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
34
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
35 while ( my $in = $stream->next_cluster() ) {
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
36 print $in->unigene_id() . "\n";
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
37 while ( my $sequence = $in->next_seq() ) {
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
38 print $sequence->accession_number() . "\n";
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
39 }
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
40 }
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
41 # Parsing errors are printed to STDERR.
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
42
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
43 =head1 DESCRIPTION
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
44
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
45 The ClusterIO module works with the ClusterIO format module to read
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
46 various cluster formats such as NCBI UniGene.
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
47
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
48
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
49 =head1 CONSTRUCTORS
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
50
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
51 =head2 Bio::ClusterIO-E<gt>new()
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
52
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
53 $str = Bio::ClusterIO->new(-file => 'filename',
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
54 -format=>$format);
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
55
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
56 The new() class method constructs a new Bio::ClusterIO object. The
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
57 returned object can be used to retrieve or print cluster
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
58 objects. new() accepts the following parameters:
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
59
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
60 =over 4
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
61
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
62 =item -file
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
63
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
64 A file path to be opened for reading.
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
65
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
66 =item -format
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
67
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
68 Specify the format of the file. Supported formats include:
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
69
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
70 unigene *.data UniGene build files.
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
71 dbsnp *.xml dbSNP XML files
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
72
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
73 If no format is specified and a filename is given, then the module
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
74 will attempt to deduce it from the filename. If this is unsuccessful,
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
75 the main UniGene build format is assumed.
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
76
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
77 The format name is case insensitive. 'UNIGENE', 'UniGene' and
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
78 'unigene' are all supported, as are dbSNP, dbsnp, and DBSNP
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
79
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
80 =back
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
81
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
82 =head1 OBJECT METHODS
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
83
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
84 See below for more detailed summaries. The main methods are:
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
85
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
86 =head2 $cluster = $str-E<gt>next_cluster()
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
87
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
88 Fetch the next cluster from the stream.
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
89
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
90
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
91 =head2 TIEHANDLE(), READLINE(), PRINT()
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
92
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
93 These I've left in here because they were in the SeqIO
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
94 module. Feedback appreciated. There they provide the tie interface.
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
95 See L<perltie> for more details.
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
96
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
97 =head1 FEEDBACK
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
98
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
99 =head2 Mailing Lists
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
100
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
101 User feedback is an integral part of the evolution of this
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
102 and other Bioperl modules. Send your comments and suggestions preferably
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
103 to one of the Bioperl mailing lists.
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
104 Your participation is much appreciated.
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
105
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
106 bioperl-l@bioperl.org - General discussion
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
107 http://bioperl.org/MailList.shtml - About the mailing lists
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
108
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
109 =head2 Reporting Bugs
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
110
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
111 Report bugs to the Bioperl bug tracking system to help us keep track
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
112 the bugs and their resolution.
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
113 Bug reports can be submitted via email or the web:
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
114
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
115 bioperl-bugs@bioperl.org
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
116 http://bugzilla.bioperl.org/
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
117
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
118 =head1 AUTHOR - Andrew Macgregor
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
119
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
120 Email andrew@anatomy.otago.ac.nz
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
121
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
122 =head1 APPENDIX
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
123
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
124 The rest of the documentation details each of the object
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
125 methods. Internal methods are usually preceded with a _
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
126
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
127 =cut
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
128
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
129 #'
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
130 # Let the code begin...
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
131
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
132 package Bio::ClusterIO;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
133
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
134 use strict;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
135 use vars qw(@ISA);
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
136
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
137 use Bio::Root::Root;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
138 use Bio::Root::IO;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
139
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
140 @ISA = qw(Bio::Root::Root Bio::Root::IO);
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
141
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
142
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
143
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
144 =head2 new
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
145
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
146 Title : new
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
147 Usage : Bio::ClusterIO->new(-file => $filename, -format => 'format')
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
148 Function: Returns a new cluster stream
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
149 Returns : A Bio::ClusterIO::Handler initialised with the appropriate format
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
150 Args : -file => $filename
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
151 -format => format
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
152
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
153 =cut
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
154
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
155
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
156 my $entry = 0;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
157
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
158 sub new {
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
159 my ($caller,@args) = @_;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
160 my $class = ref($caller) || $caller;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
161
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
162 # or do we want to call SUPER on an object if $caller is an
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
163 # object?
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
164 if( $class =~ /Bio::ClusterIO::(\S+)/ ) {
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
165 my ($self) = $class->SUPER::new(@args);
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
166 $self->_initialize(@args);
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
167 return $self;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
168 } else {
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
169
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
170 my %param = @args;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
171 @param{ map { lc $_ } keys %param } = values %param; # lowercase keys
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
172 my $format = $param{'-format'} ||
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
173 $class->_guess_format( $param{-file} || $ARGV[0] );
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
174 $format = "\L$format"; # normalize capitalization to lower case
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
175
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
176 return undef unless( $class->_load_format_module($format) );
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
177 return "Bio::ClusterIO::$format"->new(@args);
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
178 }
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
179 }
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
180
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
181
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
182 # _initialize is chained for all ClusterIO classes
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
183
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
184 sub _initialize {
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
185 my($self, @args) = @_;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
186 # initialize the IO part
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
187 $self->_initialize_io(@args);
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
188 }
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
189
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
190 =head2 next_cluster
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
191
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
192 Title : next_cluster
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
193 Usage : $cluster = $stream->next_cluster()
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
194 Function: Reads the next cluster object from the stream and returns it.
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
195 Returns : a L<Bio::ClusterI> compliant object
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
196 Args : none
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
197
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
198
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
199 =cut
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
200
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
201 sub next_cluster {
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
202 my ($self, $seq) = @_;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
203 $self->throw("Sorry, you cannot read from a generic Bio::ClusterIO object.");
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
204 }
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
205
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
206 =head2 cluster_factory
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
207
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
208 Title : cluster_factory
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
209 Usage : $obj->cluster_factory($newval)
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
210 Function: Get/set the object factory to use for creating the cluster
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
211 objects.
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
212 Example :
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
213 Returns : a L<Bio::Factory::ObjectFactoryI> compliant object
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
214 Args : on set, new value (a L<Bio::Factory::ObjectFactoryI>
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
215 compliant object or undef, optional)
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
216
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
217
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
218 =cut
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
219
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
220 sub cluster_factory{
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
221 my $self = shift;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
222
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
223 return $self->{'cluster_factory'} = shift if @_;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
224 return $self->{'cluster_factory'};
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
225 }
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
226
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
227 =head2 object_factory
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
228
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
229 Title : object_factory
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
230 Usage : $obj->object_factory($newval)
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
231 Function: This is an alias to cluster_factory with a more generic name.
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
232 Example :
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
233 Returns : a L<Bio::Factory::ObjectFactoryI> compliant object
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
234 Args : on set, new value (a L<Bio::Factory::ObjectFactoryI>
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
235 compliant object or undef, optional)
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
236
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
237
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
238 =cut
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
239
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
240 sub object_factory{
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
241 return shift->cluster_factory(@_);
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
242 }
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
243
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
244 =head2 _load_format_module
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
245
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
246 Title : _load_format_module
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
247 Usage : *INTERNAL ClusterIO stuff*
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
248 Function: Loads up (like use) a module at run time on demand
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
249 Example :
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
250 Returns :
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
251 Args :
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
252
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
253 =cut
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
254
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
255 sub _load_format_module {
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
256 my ($self,$format) = @_;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
257 my $module = "Bio::ClusterIO::" . $format;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
258 my $ok;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
259
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
260 eval {
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
261 $ok = $self->_load_module($module);
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
262 };
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
263 if ( $@ ) {
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
264 print STDERR <<END;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
265 $self: could not load $format - for more details on supported formats please see the ClusterIO docs
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
266 Exception $@
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
267 END
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
268 ;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
269 }
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
270 return $ok;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
271 }
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
272
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
273 =head2 _guess_format
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
274
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
275 Title : _guess_format
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
276 Usage : $obj->_guess_format($filename)
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
277 Function: guess format based on file suffix
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
278 Example :
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
279 Returns : guessed format of filename (lower case)
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
280 Args :
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
281 Notes : formats that _filehandle() will guess include unigene and dbsnp
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
282
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
283 =cut
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
284
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
285 sub _guess_format {
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
286 my $class = shift;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
287 return unless $_ = shift;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
288 return 'unigene' if /\.(data)$/i;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
289 return 'dbsnp' if /\.(xml)$/i;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
290 }
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
291
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
292 sub DESTROY {
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
293 my $self = shift;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
294
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
295 $self->close();
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
296 }
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
297
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
298 # I need some direction on these!! The module works so I haven't fiddled with them!
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
299
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
300 sub TIEHANDLE {
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
301 my ($class,$val) = @_;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
302 return bless {'seqio' => $val}, $class;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
303 }
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
304
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
305 sub READLINE {
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
306 my $self = shift;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
307 return $self->{'seqio'}->next_seq() unless wantarray;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
308 my (@list, $obj);
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
309 push @list, $obj while $obj = $self->{'seqio'}->next_seq();
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
310 return @list;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
311 }
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
312
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
313 sub PRINT {
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
314 my $self = shift;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
315 $self->{'seqio'}->write_seq(@_);
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
316 }
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
317
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
318 1;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
319