annotate variant_effect_predictor/Bio/Index/SwissPfam.pm @ 0:1f6dce3d34e0

Uploaded
author mahtabm
date Thu, 11 Apr 2013 02:01:53 -0400
parents
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
0
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2 #
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
3 # $Id: SwissPfam.pm,v 1.15 2002/10/22 07:38:33 lapp Exp $
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
4 #
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
5 # BioPerl module for Bio::Index::SwissPfam
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
6 #
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
7 # Cared for by Ewan Birney <birney@sanger.ac.uk>
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
8 #
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
9 # You may distribute this module under the same terms as perl itself
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
10
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
11 # POD documentation - main docs before the code
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
12
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
13 =head1 NAME
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
14
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
15 Bio::Index::SwissPfam - Interface for indexing swisspfam files
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
16
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
17 =head1 SYNOPSIS
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
18
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
19 use Bio::Index::SwissPfam;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
20 use strict;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
21
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
22 my $Index_File_Name = shift;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
23 my $inx = Bio::Index::SwissPfam->new('-filename' => $Index_File_Name,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
24 '-write_flag' => 'WRITE');
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
25 $inx->make_index(@ARGV);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
26
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
27 use Bio::Index::SwissPfam;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
28 use strict;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
29
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
30 my $Index_File_Name = shift;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
31 my $inx = Bio::Index::SwissPfam->new('-filename' => $Index_File_Name);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
32
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
33 foreach my $id (@ARGV) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
34 my $seq = $inx->fetch($id); # Returns stream
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
35 while( <$seq> ) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
36 if(/^>/) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
37 print;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
38 last;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
39 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
40 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
41 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
42
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
43
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
44 =head1 DESCRIPTION
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
45
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
46 SwissPfam is one of the flat files released with Pfam. This modules
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
47 provides a way of indexing this module.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
48
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
49 Inherits functions for managing dbm files from
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
50 Bio::Index::Abstract.pm, and provides the basic funtionallity for
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
51 indexing SwissPfam files. Only retrieves FileStreams at the
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
52 moment. Once we have something better (ie, an object!), will use
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
53 that. Heavily snaffled from James Gilbert's Fasta system. Note: for
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
54 best results 'use strict'.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
55
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
56 =head1 FEED_BACK
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
57
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
58 =head2 Mailing Lists
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
59
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
60 User feedback is an integral part of the evolution of this and other
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
61 Bioperl modules. Send your comments and suggestions preferably to one
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
62 of the Bioperl mailing lists. Your participation is much appreciated.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
63
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
64 bioperl-l@bioperl.org - General discussion
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
65 http://bioperl.org/MailList.shtml - About the mailing lists
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
66
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
67 =head2 Reporting Bugs
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
68
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
69 Report bugs to the Bioperl bug tracking system to help us keep track
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
70 the bugs and their resolution. Bug reports can be submitted via
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
71 email or the web:
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
72
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
73 bioperl-bugs@bio.perl.org
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
74 http://bugzilla.bioperl.org/
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
75
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
76 =head1 AUTHOR - Ewan Birney
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
77
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
78 Email - birney@sanger.ac.uk
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
79
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
80 =head1 APPENDIX
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
81
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
82 The rest of the documentation details each of the object methods. Internal methods are usually preceded with a _
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
83
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
84 =cut
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
85
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
86
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
87 # Let's begin the code...
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
88
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
89
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
90 package Bio::Index::SwissPfam;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
91
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
92 use vars qw($VERSION @ISA);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
93 use strict;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
94
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
95 use Bio::Index::Abstract;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
96 use Bio::Seq;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
97
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
98 @ISA = qw(Bio::Index::Abstract);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
99
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
100 #
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
101 # Suggested fix by Michael G Schwern <schwern@pobox.com> to
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
102 # get around a clash with CPAN shell...
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
103 #
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
104
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
105 BEGIN {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
106 $VERSION = 0.1;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
107 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
108
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
109 sub _version {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
110 return $VERSION;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
111 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
112
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
113 =head2 _index_file
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
114
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
115 Title : _index_file
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
116 Usage : $index->_index_file( $file_name, $i )
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
117 Function: Specialist function to index swisspfam format files.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
118 Is provided with a filename and an integer
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
119 by make_index in its SUPER class.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
120 Example :
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
121 Returns :
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
122 Args :
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
123
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
124 =cut
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
125
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
126 sub _index_file {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
127 my( $self,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
128 $file, # File name
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
129 $i # Index-number of file being indexed
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
130 ) = @_;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
131
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
132 my( $begin, # Offset from start of file of the start
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
133 # of the last found record.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
134 $end, # Offset from start of file of the end
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
135 # of the last found record.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
136 $id, # ID of last found record.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
137 $acc, # accession of last record. Also put into the index
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
138 $nid, $nacc, # new ids for the record just found
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
139 );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
140
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
141 $begin = 0;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
142 $end = 0;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
143
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
144 open SP, $file or $self->throw("Can't open file for read : $file");
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
145
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
146 # Main indexing loop
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
147 while (<SP>) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
148 if (/^>(\S+)\s+\|=*\|\s+(\S+)/) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
149 $nid = $1;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
150 $nacc = $2;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
151 my $new_begin = tell(SP) - length( $_ );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
152 $end = $new_begin - 1;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
153
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
154 if( $id ) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
155 $self->add_record($id, $i, $begin, $end);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
156 if( $acc ne $id ) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
157 $self->add_record($acc, $i, $begin, $end);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
158 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
159 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
160 $begin = $new_begin;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
161 $id = $nid;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
162 $acc = $nacc;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
163 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
164 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
165 # Don't forget to add the last record
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
166 $end = tell(SP);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
167 $self->add_record($id, $i, $begin, $end) if $id;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
168
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
169 close SP;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
170 return 1;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
171 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
172
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
173
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
174 =head2 fetch
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
175
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
176 Title : fetch
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
177 Usage : $index->fetch( $id )
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
178 Function: Returns a Bio::Seq object from the index
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
179 Example : $seq = $index->fetch( 'dJ67B12' )
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
180 Returns : Bio::Seq object
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
181 Args : ID
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
182
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
183 =cut
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
184
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
185 sub fetch {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
186 my( $self, $id ) = @_;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
187 my $desc;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
188 my $db = $self->db();
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
189 if (my $rec = $db->{ $id }) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
190 my( @record );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
191
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
192 my ($file, $begin, $end) = $self->unpack_record( $rec );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
193
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
194 # Get the (possibly cached) filehandle
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
195 my $fh = $self->_file_handle( $file );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
196
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
197 # move to start
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
198 seek($fh, $begin, 0);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
199
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
200 return $fh;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
201 } else {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
202 $self->throw("Unable to find a record for $id in SwissPfam flat file index");
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
203 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
204 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
205
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
206 1;