annotate variant_effect_predictor/Bio/PrimarySeqI.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: PrimarySeqI.pm,v 1.50.2.3 2003/08/29 15:37:39 birney Exp $
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2 #
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
3 # BioPerl module for Bio::PrimarySeqI
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
4 #
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
5 # Cared for by Ewan Birney <birney@sanger.ac.uk>
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
6 #
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
7 # Copyright Ewan Birney
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::PrimarySeqI [Developers] - Interface definition for a Bio::PrimarySeq
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
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
20 # Bio::PrimarySeqI is the interface class for sequences.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
21
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
22 # If you are a newcomer to bioperl, you should
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
23 # start with Bio::Seq documentation. This
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
24 # documentation is mainly for developers using
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
25 # Bioperl.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
26
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
27 # to test this is a seq object
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
28
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
29 $obj->isa("Bio::PrimarySeqI") ||
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
30 $obj->throw("$obj does not implement the Bio::PrimarySeqI interface");
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
31
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
32 # accessors
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
33
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
34 $string = $obj->seq();
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
35 $substring = $obj->subseq(12,50);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
36 $display = $obj->display_id(); # for human display
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
37 $id = $obj->primary_id(); # unique id for this object,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
38 # implementation defined
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
39 $unique_key= $obj->accession_number();
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
40 # unique biological id
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
41
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
42 # object manipulation
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
43
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
44 eval {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
45 $rev = $obj->revcom();
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
46 };
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
47 if( $@ ) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
48 $obj->throw("Could not reverse complement. ".
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
49 "Probably not DNA. Actual exception\n$@\n");
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
50 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
51
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
52 $trunc = $obj->trunc(12,50);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
53
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
54 # $rev and $trunc are Bio::PrimarySeqI compliant objects
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
55
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
56
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
57 =head1 DESCRIPTION
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
58
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
59 This object defines an abstract interface to basic sequence
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
60 information - for most users of the package the documentation (and
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
61 methods) in this class are not useful - this is a developers only
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
62 class which defines what methods have to be implmented by other Perl
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
63 objects to comply to the Bio::PrimarySeqI interface. Go "perldoc
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
64 Bio::Seq" or "man Bio::Seq" for more information on the main class for
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
65 sequences.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
66
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
67
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
68 PrimarySeq is an object just for the sequence and its name(s), nothing
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
69 more. Seq is the larger object complete with features. There is a pure
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
70 perl implementation of this in Bio::PrimarySeq. If you just want to
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
71 use Bio::PrimarySeq objects, then please read that module first. This
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
72 module defines the interface, and is of more interest to people who
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
73 want to wrap their own Perl Objects/RDBs/FileSystems etc in way that
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
74 they "are" bioperl sequence objects, even though it is not using Perl
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
75 to store the sequence etc.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
76
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
77
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
78 This interface defines what bioperl consideres necessary to "be" a
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
79 sequence, without providing an implementation of this. (An
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
80 implementation is provided in Bio::PrimarySeq). If you want to provide
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
81 a Bio::PrimarySeq 'compliant' object which in fact wraps another
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
82 object/database/out-of-perl experience, then this is the correct thing
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
83 to wrap, generally by providing a wrapper class which would inheriet
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
84 from your object and this Bio::PrimarySeqI interface. The wrapper class
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
85 then would have methods lists in the "Implementation Specific
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
86 Functions" which would provide these methods for your object.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
87
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
88
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
89 =head1 FEEDBACK
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
90
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
91 =head2 Mailing Lists
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
92
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
93 User feedback is an integral part of the evolution of this and other
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
94 Bioperl modules. Send your comments and suggestions preferably to one
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
95 of the Bioperl mailing lists. Your participation is much appreciated.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
96
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
97 bioperl-l@bioperl.org - General discussion
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
98 http://bio.perl.org/MailList.html - About the mailing lists
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
99
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
100 =head2 Reporting Bugs
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
101
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
102 Report bugs to the Bioperl bug tracking system to help us keep track
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
103 the bugs and their resolution. Bug reports can be submitted via email
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
104 or the web:
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
105
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
106 bioperl-bugs@bio.perl.org
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
107 http://bugzilla.bioperl.org/
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
108
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
109 =head1 AUTHOR - Ewan Birney
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
110
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
111 Email birney@sanger.ac.uk
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
112
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
113 =head1 APPENDIX
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
114
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
115 The rest of the documentation details each of the object
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
116 methods. Internal methods are usually preceded with a _
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
117
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
118 =cut
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
119
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
120
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
121 # Let the code begin...
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
122
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
123
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
124 package Bio::PrimarySeqI;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
125 use vars qw(@ISA );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
126 use strict;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
127 use Bio::Root::RootI;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
128 use Bio::Tools::CodonTable;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
129
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
130 @ISA = qw(Bio::Root::RootI);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
131
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
132 =head1 Implementation Specific Functions
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
133
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
134 These functions are the ones that a specific implementation must
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
135 define.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
136
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
137 =head2 seq
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
138
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
139 Title : seq
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
140 Usage : $string = $obj->seq()
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
141 Function: Returns the sequence as a string of letters. The
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
142 case of the letters is left up to the implementer.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
143 Suggested cases are upper case for proteins and lower case for
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
144 DNA sequence (IUPAC standard),
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
145 but implementations are suggested to keep an open mind about
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
146 case (some users... want mixed case!)
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
147 Returns : A scalar
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
148 Status : Virtual
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
149
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
150 =cut
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
151
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
152 sub seq {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
153 my ($self) = @_;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
154 $self->throw_not_implemented();
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
155 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
156
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
157 =head2 subseq
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
158
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
159 Title : subseq
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
160 Usage : $substring = $obj->subseq(10,40);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
161 Function: returns the subseq from start to end, where the first base
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
162 is 1 and the number is inclusive, ie 1-2 are the first two
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
163 bases of the sequence
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
164
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
165 Start cannot be larger than end but can be equal
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
166
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
167 Returns : a string
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
168 Args :
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
169 Status : Virtual
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
170
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
171 =cut
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
172
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
173 sub subseq{
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
174 my ($self) = @_;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
175 $self->throw_not_implemented();
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
176 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
177
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
178 =head2 display_id
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
179
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
180 Title : display_id
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
181 Usage : $id_string = $obj->display_id();
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
182 Function: returns the display id, aka the common name of the Sequence object.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
183
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
184 The semantics of this is that it is the most likely string
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
185 to be used as an identifier of the sequence, and likely to
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
186 have "human" readability. The id is equivalent to the ID
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
187 field of the GenBank/EMBL databanks and the id field of the
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
188 Swissprot/sptrembl database. In fasta format, the >(\S+) is
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
189 presumed to be the id, though some people overload the id
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
190 to embed other information. Bioperl does not use any
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
191 embedded information in the ID field, and people are
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
192 encouraged to use other mechanisms (accession field for
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
193 example, or extending the sequence object) to solve this.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
194
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
195 Notice that $seq->id() maps to this function, mainly for
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
196 legacy/convience issues
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
197 Returns : A string
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
198 Args : None
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
199 Status : Virtual
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
200
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
201
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
202 =cut
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
203
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
204 sub display_id {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
205 my ($self) = @_;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
206 $self->throw_not_implemented();
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
207 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
208
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
209
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
210 =head2 accession_number
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
211
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
212 Title : accession_number
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
213 Usage : $unique_biological_key = $obj->accession_number;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
214 Function: Returns the unique biological id for a sequence, commonly
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
215 called the accession_number. For sequences from established
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
216 databases, the implementors should try to use the correct
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
217 accession number. Notice that primary_id() provides the
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
218 unique id for the implemetation, allowing multiple objects
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
219 to have the same accession number in a particular implementation.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
220
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
221 For sequences with no accession number, this method should return
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
222 "unknown".
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
223 Returns : A string
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
224 Args : None
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
225 Status : Virtual
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
226
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
227
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
228 =cut
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
229
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
230 sub accession_number {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
231 my ($self,@args) = @_;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
232 $self->throw_not_implemented();
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
233 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
234
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
235
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
236
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
237 =head2 primary_id
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
238
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
239 Title : primary_id
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
240 Usage : $unique_implementation_key = $obj->primary_id;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
241 Function: Returns the unique id for this object in this
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
242 implementation. This allows implementations to manage their
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
243 own object ids in a way the implementaiton can control
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
244 clients can expect one id to map to one object.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
245
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
246 For sequences with no accession number, this method should
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
247 return a stringified memory location.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
248
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
249 [Note this method name is likely to change in 1.3]
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
250
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
251 Returns : A string
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
252 Args : None
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
253 Status : Virtual
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
254
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
255
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
256 =cut
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
257
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
258 sub primary_id {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
259 my ($self,@args) = @_;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
260 $self->throw_not_implemented();
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
261 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
262
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
263
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
264 =head2 can_call_new
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
265
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
266 Title : can_call_new
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
267 Usage : if( $obj->can_call_new ) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
268 $newobj = $obj->new( %param );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
269 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
270 Function: can_call_new returns 1 or 0 depending
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
271 on whether an implementation allows new
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
272 constructor to be called. If a new constructor
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
273 is allowed, then it should take the followed hashed
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
274 constructor list.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
275
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
276 $myobject->new( -seq => $sequence_as_string,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
277 -display_id => $id
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
278 -accession_number => $accession
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
279 -alphabet => 'dna',
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
280 );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
281 Example :
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
282 Returns : 1 or 0
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
283 Args :
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
284
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
285
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
286 =cut
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
287
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
288 sub can_call_new{
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
289 my ($self,@args) = @_;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
290
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
291 # we default to 0 here
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
292
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
293 return 0;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
294 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
295
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
296 =head2 alphabet
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
297
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
298 Title : alphabet
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
299 Usage : if( $obj->alphabet eq 'dna' ) { /Do Something/ }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
300 Function: Returns the type of sequence being one of
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
301 'dna', 'rna' or 'protein'. This is case sensitive.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
302
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
303 This is not called <type> because this would cause
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
304 upgrade problems from the 0.5 and earlier Seq objects.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
305
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
306 Returns : a string either 'dna','rna','protein'. NB - the object must
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
307 make a call of the type - if there is no type specified it
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
308 has to guess.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
309 Args : none
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
310 Status : Virtual
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
311
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
312
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
313 =cut
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
314
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
315 sub alphabet{
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
316 my ( $self ) = @_;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
317 $self->throw_not_implemented();
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
318 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
319
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
320 sub moltype{
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
321 my ($self,@args) = @_;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
322
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
323 $self->warn("moltype: pre v1.0 method. Calling alphabet() instead...");
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
324 $self->alphabet(@args);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
325 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
326
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
327
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
328 =head1 Optional Implementation Functions
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
329
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
330 The following functions rely on the above functions. An
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
331 implementing class does not need to provide these functions, as they
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
332 will be provided by this class, but is free to override these
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
333 functions.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
334
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
335 All of revcom(), trunc(), and translate() create new sequence
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
336 objects. They will call new() on the class of the sequence object
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
337 instance passed as argument, unless can_call_new() returns FALSE. In
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
338 the latter case a Bio::PrimarySeq object will be created. Implementors
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
339 which really want to control how objects are created (eg, for object
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
340 persistence over a database, or objects in a CORBA framework), they
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
341 are encouraged to override these methods
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
342
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
343 =head2 revcom
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
344
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
345 Title : revcom
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
346 Usage : $rev = $seq->revcom()
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
347 Function: Produces a new Bio::PrimarySeqI implementing object which
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
348 is the reversed complement of the sequence. For protein
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
349 sequences this throws an exception of "Sequence is a
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
350 protein. Cannot revcom"
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
351
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
352 The id is the same id as the original sequence, and the
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
353 accession number is also indentical. If someone wants to
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
354 track that this sequence has be reversed, it needs to
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
355 define its own extensions
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
356
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
357 To do an inplace edit of an object you can go:
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
358
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
359 $seq = $seq->revcom();
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
360
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
361 This of course, causes Perl to handle the garbage
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
362 collection of the old object, but it is roughly speaking as
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
363 efficient as an inplace edit.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
364
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
365 Returns : A new (fresh) Bio::PrimarySeqI object
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
366 Args : none
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
367
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
368
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
369 =cut
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
370
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
371 sub revcom{
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
372 my ($self) = @_;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
373
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
374 # check the type is good first.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
375 my $t = $self->alphabet;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
376
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
377 if( $t eq 'protein' ) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
378 $self->throw("Sequence is a protein. Cannot revcom");
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
379 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
380
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
381 if( $t ne 'dna' && $t ne 'rna' ) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
382 if( $self->can('warn') ) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
383 $self->warn("Sequence is not dna or rna, but [$t]. ".
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
384 "Attempting to revcom, but unsure if this is right");
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
385 } else {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
386 warn("[$self] Sequence is not dna or rna, but [$t]. ".
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
387 "Attempting to revcom, but unsure if this is right");
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
388 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
389 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
390
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
391 # yank out the sequence string
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
392
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
393 my $str = $self->seq();
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
394
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
395 # if is RNA - map to DNA then map back
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
396
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
397 if( $t eq 'rna' ) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
398 $str =~ tr/uU/tT/;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
399 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
400
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
401 # revcom etc...
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
402
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
403 $str =~ tr/acgtrymkswhbvdnxACGTRYMKSWHBVDNX/tgcayrkmswdvbhnxTGCAYRKMSWDVBHNX/;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
404 my $revseq = CORE::reverse $str;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
405
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
406 if( $t eq 'rna' ) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
407 $revseq =~ tr/tT/uU/;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
408 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
409
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
410 my $seqclass;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
411 if($self->can_call_new()) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
412 $seqclass = ref($self);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
413 } else {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
414 $seqclass = 'Bio::PrimarySeq';
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
415 $self->_attempt_to_load_Seq();
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
416 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
417 my $out = $seqclass->new( '-seq' => $revseq,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
418 '-display_id' => $self->display_id,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
419 '-accession_number' => $self->accession_number,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
420 '-alphabet' => $self->alphabet,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
421 '-desc' => $self->desc(),
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
422 '-verbose' => $self->verbose
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
423 );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
424 return $out;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
425
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
426 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
427
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
428 =head2 trunc
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
429
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
430 Title : trunc
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
431 Usage : $subseq = $myseq->trunc(10,100);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
432 Function: Provides a truncation of a sequence,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
433
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
434 Example :
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
435 Returns : a fresh Bio::PrimarySeqI implementing object
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
436 Args : Two integers denoting first and last base of the sub-sequence.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
437
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
438
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
439 =cut
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
440
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
441 sub trunc{
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
442 my ($self,$start,$end) = @_;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
443
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
444 my $str;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
445 if( defined $start && ref($start) &&
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
446 $start->isa('Bio::LocationI') ) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
447 $str = $self->subseq($start); # start is a location actually
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
448 } elsif( !$end ) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
449 $self->throw("trunc start,end -- there was no end for $start");
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
450 } elsif( $end < $start ) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
451 my $msg = "start [$start] is greater than end [$end]. \n".
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
452 "If you want to truncated and reverse complement, \n".
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
453 "you must call trunc followed by revcom. Sorry.";
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
454 $self->throw($msg);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
455 } else {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
456 $str = $self->subseq($start,$end);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
457 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
458
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
459 my $seqclass;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
460 if($self->can_call_new()) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
461 $seqclass = ref($self);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
462 } else {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
463 $seqclass = 'Bio::PrimarySeq';
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
464 $self->_attempt_to_load_Seq();
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
465 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
466
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
467 my $out = $seqclass->new( '-seq' => $str,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
468 '-display_id' => $self->display_id,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
469 '-accession_number' => $self->accession_number,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
470 '-alphabet' => $self->alphabet,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
471 '-desc' => $self->desc(),
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
472 '-verbose' => $self->verbose
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
473 );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
474 return $out;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
475 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
476
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
477 =head2 translate
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
478
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
479 Title : translate
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
480 Usage : $protein_seq_obj = $dna_seq_obj->translate
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
481 #if full CDS expected:
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
482 $protein_seq_obj = $cds_seq_obj->translate(undef,undef,undef,undef,1);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
483 Function:
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
484
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
485 Provides the translation of the DNA sequence using full
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
486 IUPAC ambiguities in DNA/RNA and amino acid codes.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
487
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
488 The full CDS translation is identical to EMBL/TREMBL
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
489 database translation. Note that the trailing terminator
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
490 character is removed before returning the translation
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
491 object.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
492
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
493 Note: if you set $dna_seq_obj->verbose(1) you will get a
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
494 warning if the first codon is not a valid initiator.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
495
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
496
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
497 Returns : A Bio::PrimarySeqI implementing object
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
498 Args : character for terminator (optional) defaults to '*'
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
499 character for unknown amino acid (optional) defaults to 'X'
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
500 frame (optional) valid values 0, 1, 2, defaults to 0
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
501 codon table id (optional) defaults to 1
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
502 complete coding sequence expected, defaults to 0 (false)
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
503 boolean, throw exception if not complete CDS (true) or defaults to
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
504 warning (false)
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
505 coding sequence expected to be complete at 5', defaults to false
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
506 coding sequence expected to be complete at 3', defaults to false
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
507
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
508 =cut
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
509
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
510 sub translate {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
511 my($self) = shift;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
512 my($stop, $unknown, $frame, $tableid, $fullCDS, $throw, $complete5,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
513 $complete3) = @_;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
514 my($i, $len, $output) = (0,0,'');
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
515 my($codon) = "";
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
516 my $aa;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
517
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
518 ## User can pass in symbol for stop and unknown codons
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
519 unless(defined($stop) and $stop ne '') { $stop = "*"; }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
520 unless(defined($unknown) and $unknown ne '') { $unknown = "X"; }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
521 unless(defined($frame) and $frame ne '') { $frame = 0; }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
522
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
523 ## the codon table ID
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
524 unless(defined($tableid) and $tableid ne '') { $tableid = 1; }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
525
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
526 ##Error if monomer is "Amino"
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
527 $self->throw("Can't translate an amino acid sequence.") if
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
528 ($self->alphabet eq 'protein');
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
529
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
530 ##Error if frame is not 0, 1 or 2
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
531 $self->throw("Valid values for frame are 0, 1, 2, not [$frame].") unless
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
532 ($frame == 0 or $frame == 1 or $frame == 2);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
533
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
534 #warns if ID is invalid
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
535 my $codonTable = Bio::Tools::CodonTable->new( -id => $tableid);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
536
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
537 my ($seq) = $self->seq();
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
538
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
539 # deal with frame offset.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
540 if( $frame ) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
541 $seq = substr ($seq,$frame);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
542 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
543
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
544 # Translate it
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
545 $output = $codonTable->translate($seq);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
546 # Use user-input stop/unknown
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
547 $output =~ s/\*/$stop/g;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
548 $output =~ s/X/$unknown/g;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
549
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
550 # $complete5 and $complete3 indicate completeness of
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
551 # the coding sequence at the 5' and 3' ends. Complete
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
552 # if true, default to false. These are in addition to
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
553 # $fullCDS, for backwards compatibility
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
554 defined($complete5) or ($complete5 = $fullCDS ? 1 : 0);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
555 defined($complete3) or ($complete3 = $fullCDS ? 1 : 0);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
556
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
557 my $id = $self->display_id;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
558
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
559 # only if we are expecting to be complete at the 5' end
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
560 if($complete5) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
561 # if the initiator codon is not ATG, the amino acid needs to changed into M
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
562 if(substr($output,0,1) ne 'M') {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
563 if($codonTable->is_start_codon(substr($seq, 0, 3)) ) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
564 $output = 'M' . substr($output, 1);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
565 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
566 elsif($throw) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
567 $self->throw("Seq [$id]: Not using a valid initiator codon!");
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
568 } else {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
569 $self->warn("Seq [$id]: Not using a valid initiator codon!");
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
570 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
571 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
572 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
573
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
574 # only if we are expecting to be complete at the 3' end
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
575 if($complete3) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
576 #remove the stop character
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
577 if(substr($output, -1, 1) eq $stop) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
578 chop $output;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
579 } else {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
580 $throw && $self->throw("Seq [$id]: Not using a valid terminator codon!");
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
581 $self->warn("Seq [$id]: Not using a valid terminator codon!");
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
582 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
583 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
584
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
585 # only if we are expecting to translate a complete coding region
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
586 if($complete5 and $complete3) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
587 # test if there are terminator characters inside the protein sequence!
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
588 if($output =~ /\*/) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
589 $throw && $self->throw("Seq [$id]: Terminator codon inside CDS!");
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
590 $self->warn("Seq [$id]: Terminator codon inside CDS!");
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
591 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
592 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
593
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
594 my $seqclass;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
595 if($self->can_call_new()) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
596 $seqclass = ref($self);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
597 } else {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
598 $seqclass = 'Bio::PrimarySeq';
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
599 $self->_attempt_to_load_Seq();
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
600 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
601 my $out = $seqclass->new( '-seq' => $output,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
602 '-display_id' => $self->display_id,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
603 '-accession_number' => $self->accession_number,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
604 # is there anything wrong with retaining the
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
605 # description?
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
606 '-desc' => $self->desc(),
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
607 '-alphabet' => 'protein',
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
608 '-verbose' => $self->verbose
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
609 );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
610 return $out;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
611
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
612 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
613
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
614 =head2 id
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
615
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
616 Title : id
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
617 Usage : $id = $seq->id()
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
618 Function: ID of the sequence. This should normally be (and actually is in
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
619 the implementation provided here) just a synonym for display_id().
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
620 Example :
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
621 Returns : A string.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
622 Args :
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
623
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
624
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
625 =cut
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
626
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
627 sub id {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
628 return shift->display_id();
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
629 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
630
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
631
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
632 =head2 length
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
633
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
634 Title : length
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
635 Usage : $len = $seq->length()
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
636 Function:
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
637 Example :
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
638 Returns : integer representing the length of the sequence.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
639 Args :
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
640
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
641
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
642 =cut
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
643
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
644 sub length {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
645 shift->throw_not_implemented();
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
646 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
647
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
648 =head2 desc
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
649
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
650 Title : desc
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
651 Usage : $seq->desc($newval);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
652 $description = $seq->desc();
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
653 Function: Get/set description text for a seq object
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
654 Example :
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
655 Returns : value of desc
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
656 Args : newvalue (optional)
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
657
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
658
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
659 =cut
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
660
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
661 sub desc {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
662 my ($self,$value) = @_;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
663 $self->throw_not_implemented();
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
664 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
665
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
666
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
667 =head2 is_circular
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
668
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
669 Title : is_circular
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
670 Usage : if( $obj->is_circular) { /Do Something/ }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
671 Function: Returns true if the molecule is circular
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
672 Returns : Boolean value
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
673 Args : none
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
674
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
675 =cut
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
676
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
677 sub is_circular{
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
678 shift->throw_not_implemented();
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
679 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
680
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
681 =head1 Private functions
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
682
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
683 These are some private functions for the PrimarySeqI interface. You do not
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
684 need to implement these functions
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
685
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
686 =head2 _attempt_to_load_Seq
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
687
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
688 Title : _attempt_to_load_Seq
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
689 Usage :
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
690 Function:
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
691 Example :
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
692 Returns :
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
693 Args :
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
694
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
695
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
696 =cut
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
697
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
698 sub _attempt_to_load_Seq{
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
699 my ($self) = @_;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
700
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
701 if( $main::{'Bio::PrimarySeq'} ) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
702 return 1;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
703 } else {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
704 eval {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
705 require Bio::PrimarySeq;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
706 };
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
707 if( $@ ) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
708 my $text = "Bio::PrimarySeq could not be loaded for [$self]\n".
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
709 "This indicates that you are using Bio::PrimarySeqI ".
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
710 "without Bio::PrimarySeq loaded or without providing a ".
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
711 "complete implementation.\nThe most likely problem is that there ".
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
712 "has been a misconfiguration of the bioperl environment\n".
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
713 "Actual exception:\n\n";
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
714 $self->throw("$text$@\n");
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
715 return 0;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
716 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
717 return 1;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
718 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
719
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
720 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
721
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
722 1;