annotate variant_effect_predictor/Bio/ClusterIO.pm @ 3:d30fa12e4cc5 default tip

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