annotate variant_effect_predictor/Bio/PrimarySeq.pm @ 0:2bc9b66ada89 draft default tip

Uploaded
author mahtabm
date Thu, 11 Apr 2013 06:29:17 -0400
parents
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
0
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
1 # $Id: PrimarySeq.pm,v 1.73.2.1 2003/06/29 00:25:27 jason Exp $
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
2 #
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
3 # bioperl module for Bio::PrimarySeq
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
4 #
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
5 # Cared for by Ewan Birney <birney@sanger.ac.uk>
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
6 #
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
7 # Copyright Ewan Birney
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
8 #
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
9 # You may distribute this module under the same terms as perl itself
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
10
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
11 # POD documentation - main docs before the code
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
12
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
13 =head1 NAME
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
14
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
15 Bio::PrimarySeq - Bioperl lightweight Sequence Object
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
16
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
17 =head1 SYNOPSIS
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
18
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
19 # The Bio::SeqIO for file reading, Bio::DB::GenBank for
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
20 # database reading
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
21
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
22 use Bio::Seq;
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
23 use Bio::SeqIO;
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
24 use Bio::DB::GenBank;
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
25
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
26 #make from memory
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
27 $seqobj = Bio::PrimarySeq->new ( -seq => 'ATGGGGTGGGCGGTGGGTGGTTTG',
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
28 -id => 'GeneFragment-12',
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
29 -accession_number => 'X78121',
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
30 -alphabet => 'dna',
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
31 -is_circular => 1
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
32 );
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
33 print "Sequence ", $seqobj->id(), " with accession ",
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
34 $seqobj->accession_number, "\n";
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
35
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
36 # read from file
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
37 $inputstream = Bio::SeqIO->new(-file => "myseq.fa",-format => 'Fasta');
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
38 $seqobj = $inputstream->next_seq();
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
39 print "Sequence ", $seqobj->id(), " and desc ", $seqobj->desc, "\n";
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
40
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
41
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
42 # to get out parts of the sequence.
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
43
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
44 print "Sequence ", $seqobj->id(), " with accession ",
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
45 $seqobj->accession_number, " and desc ", $seqobj->desc, "\n";
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
46
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
47 $string = $seqobj->seq();
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
48 $string2 = $seqobj->subseq(1,40);
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
49
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
50
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
51 =head1 DESCRIPTION
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
52
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
53 PrimarySeq is a lightweight Sequence object, storing little more than
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
54 the sequence, its name, a computer useful unique name. It does not
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
55 contain sequence features or other information. To have a sequence
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
56 with sequence features you should use the Seq object which uses this
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
57 object - go perldoc Bio::Seq
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
58
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
59 Although newusers will use Bio::PrimarySeq alot, in general you will
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
60 be using it from the Bio::Seq object. For more information on Bio::Seq
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
61 go perldoc Bio::Seq. For interest you might like to known that
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
62 Bio::Seq has-a Bio::PrimarySeq and forwards most of the function calls
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
63 to do with sequence to it (the has-a relationship lets us get out of a
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
64 otherwise nasty cyclical reference in Perl which would leak memory).
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
65
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
66 Sequence objects are defined by the Bio::PrimarySeqI interface, and this
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
67 object is a pure Perl implementation of the interface (if that's
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
68 gibberish to you, don't worry. The take home message is that this
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
69 object is the bioperl default sequence object, but other people can
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
70 use their own objects as sequences if they so wish). If you are
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
71 interested in wrapping your own objects as compliant Bioperl sequence
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
72 objects, then you should read the Bio::PrimarySeqI documentation
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
73
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
74 The documenation of this object is a merge of the Bio::PrimarySeq and
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
75 Bio::PrimarySeqI documentation. This allows all the methods which you can
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
76 call on sequence objects here.
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
77
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
78 =head1 FEEDBACK
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
79
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
80 =head2 Mailing Lists
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
81
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
82 User feedback is an integral part of the evolution of this and other
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
83 Bioperl modules. Send your comments and suggestions preferably to one
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
84 of the Bioperl mailing lists. Your participation is much appreciated.
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
85
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
86 bioperl-l@bioperl.org - General discussion
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
87 http://bio.perl.org/MailList.html - About the mailing lists
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
88
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
89 =head2 Reporting Bugs
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
90
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
91 Report bugs to the Bioperl bug tracking system to help us keep track
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
92 the bugs and their resolution. Bug reports can be submitted via email
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
93 or the web:
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
94
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
95 bioperl-bugs@bio.perl.org
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
96 http://bugzilla.bioperl.org/
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
97
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
98 =head1 AUTHOR - Ewan Birney
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
99
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
100 Email birney@sanger.ac.uk
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
101
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
102 Describe contact details here
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
103
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
104 =head1 APPENDIX
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
105
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
106 The rest of the documentation details each of the object
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
107 methods. Internal methods are usually preceded with a _
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
108
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
109 =cut
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
110
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
111
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
112 # Let the code begin...
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
113
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
114
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
115 package Bio::PrimarySeq;
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
116 use vars qw(@ISA);
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
117 use strict;
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
118
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
119 use Bio::Root::Root;
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
120 use Bio::PrimarySeqI;
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
121 use Bio::IdentifiableI;
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
122 use Bio::DescribableI;
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
123
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
124 @ISA = qw(Bio::Root::Root Bio::PrimarySeqI
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
125 Bio::IdentifiableI Bio::DescribableI);
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
126
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
127 #
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
128 # setup the allowed values for alphabet()
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
129 #
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
130
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
131 my %valid_type = map {$_, 1} qw( dna rna protein );
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
132
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
133 =head2 new
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
134
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
135 Title : new
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
136 Usage : $seq = Bio::PrimarySeq->new( -seq => 'ATGGGGGTGGTGGTACCCT',
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
137 -id => 'human_id',
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
138 -accession_number => 'AL000012',
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
139 );
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
140
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
141 Function: Returns a new primary seq object from
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
142 basic constructors, being a string for the sequence
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
143 and strings for id and accession_number.
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
144
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
145 Note that you can provide an empty sequence string. However, in
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
146 this case you MUST specify the type of sequence you wish to
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
147 initialize by the parameter -alphabet. See alphabet() for possible
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
148 values.
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
149 Returns : a new Bio::PrimarySeq object
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
150 Args : -seq => sequence string
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
151 -display_id => display id of the sequence (locus name)
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
152 -accession_number => accession number
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
153 -primary_id => primary id (Genbank id)
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
154 -namespace => the namespace for the accession
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
155 -authority => the authority for the namespace
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
156 -desc => description text
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
157 -alphabet => sequence type (alphabet) (dna|rna|protein)
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
158 -id => alias for display id
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
159 -is_circular => boolean field for whether or not sequence is circular
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
160
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
161 =cut
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
162
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
163
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
164 sub new {
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
165 my ($class, @args) = @_;
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
166 my $self = $class->SUPER::new(@args);
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
167
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
168 my($seq,$id,$acc,$pid,$ns,$auth,$v,$oid,
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
169 $desc,$alphabet,$given_id,$is_circular,$direct,$ref_to_seq,$len) =
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
170 $self->_rearrange([qw(SEQ
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
171 DISPLAY_ID
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
172 ACCESSION_NUMBER
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
173 PRIMARY_ID
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
174 NAMESPACE
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
175 AUTHORITY
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
176 VERSION
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
177 OBJECT_ID
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
178 DESC
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
179 ALPHABET
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
180 ID
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
181 IS_CIRCULAR
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
182 DIRECT
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
183 REF_TO_SEQ
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
184 LENGTH
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
185 )],
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
186 @args);
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
187 if( defined $id && defined $given_id ) {
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
188 if( $id ne $given_id ) {
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
189 $self->throw("Provided both id and display_id constructor ".
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
190 "functions. [$id] [$given_id]");
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
191 }
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
192 }
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
193 if( defined $given_id ) { $id = $given_id; }
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
194
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
195 # let's set the length before the seq -- if there is one, this length is
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
196 # going to be invalidated
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
197 defined $len && $self->length($len);
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
198
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
199 # if alphabet is provided we set it first, so that it won't be guessed
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
200 # when the sequence is set
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
201 $alphabet && $self->alphabet($alphabet);
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
202
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
203 # if there is an alphabet, and direct is passed in, assumme the alphabet
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
204 # and sequence is ok
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
205
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
206 if( $direct && $ref_to_seq) {
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
207 $self->{'seq'} = $$ref_to_seq;
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
208 if( ! $alphabet ) {
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
209 $self->_guess_alphabet();
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
210 } # else it has been set already above
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
211 } else {
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
212 # print STDERR "DEBUG: setting sequence to [$seq]\n";
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
213 # note: the sequence string may be empty
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
214 $self->seq($seq) if defined($seq);
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
215 }
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
216
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
217 $id && $self->display_id($id);
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
218 $acc && $self->accession_number($acc);
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
219 defined $pid && $self->primary_id($pid);
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
220 $desc && $self->desc($desc);
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
221 $is_circular && $self->is_circular($is_circular);
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
222 $ns && $self->namespace($ns);
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
223 $auth && $self->authority($auth);
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
224 defined($v) && $self->version($v);
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
225 defined($oid) && $self->object_id($oid);
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
226
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
227 return $self;
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
228 }
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
229
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
230 sub direct_seq_set {
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
231 my $obj = shift;
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
232 return $obj->{'seq'} = shift if @_;
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
233 return undef;
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
234 }
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
235
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
236
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
237 =head2 seq
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
238
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
239 Title : seq
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
240 Usage : $string = $obj->seq()
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
241 Function: Returns the sequence as a string of letters. The
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
242 case of the letters is left up to the implementer.
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
243 Suggested cases are upper case for proteins and lower case for
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
244 DNA sequence (IUPAC standard), but you should not rely on this
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
245 Returns : A scalar
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
246 Args : Optionally on set the new value (a string). An optional second
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
247 argument presets the alphabet (otherwise it will be guessed).
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
248 Both parameters may also be given in named paramater style
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
249 with -seq and -alphabet being the names.
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
250
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
251 =cut
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
252
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
253 sub seq {
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
254 my ($obj,@args) = @_;
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
255
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
256 if( scalar(@args) == 0 ) {
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
257 return $obj->{'seq'};
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
258 }
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
259
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
260 my ($value,$alphabet) = @args;
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
261
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
262
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
263 if(@args) {
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
264 if(defined($value) && (! $obj->validate_seq($value))) {
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
265 $obj->throw("Attempting to set the sequence to [$value] ".
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
266 "which does not look healthy");
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
267 }
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
268 # if a sequence was already set we make sure that we re-adjust the
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
269 # mol.type, otherwise we skip guessing if mol.type is already set
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
270 # note: if the new seq is empty or undef, we don't consider that a
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
271 # change (we wouldn't have anything to guess on anyway)
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
272 my $is_changed_seq =
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
273 exists($obj->{'seq'}) && (CORE::length($value || '') > 0);
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
274 $obj->{'seq'} = $value;
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
275 # new alphabet overridden by arguments?
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
276 if($alphabet) {
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
277 # yes, set it no matter what
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
278 $obj->alphabet($alphabet);
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
279 } elsif( # if we changed a previous sequence to a new one
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
280 $is_changed_seq ||
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
281 # or if there is no alphabet yet at all
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
282 (! defined($obj->alphabet()))) {
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
283 # we need to guess the (possibly new) alphabet
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
284 $obj->_guess_alphabet();
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
285 } # else (seq not changed and alphabet was defined) do nothing
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
286 # if the seq is changed, make sure we unset a possibly set length
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
287 $obj->length(undef) if $is_changed_seq;
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
288 }
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
289 return $obj->{'seq'};
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
290 }
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
291
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
292 =head2 validate_seq
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
293
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
294 Title : validate_seq
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
295 Usage : if(! $seq->validate_seq($seq_str) ) {
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
296 print "sequence $seq_str is not valid for an object of type ",
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
297 ref($seq), "\n";
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
298 }
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
299 Function: Validates a given sequence string. A validating sequence string
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
300 must be accepted by seq(). A string that does not validate will
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
301 lead to an exception if passed to seq().
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
302
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
303 The implementation provided here does not take alphabet() into
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
304 account. Allowed are all letters (A-Z) and '-','.', '*' and '?'.
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
305
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
306 Example :
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
307 Returns : 1 if the supplied sequence string is valid for the object, and
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
308 0 otherwise.
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
309 Args : The sequence string to be validated.
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
310
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
311
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
312 =cut
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
313
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
314 sub validate_seq {
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
315 my ($self,$seqstr) = @_;
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
316 if( ! defined $seqstr ){ $seqstr = $self->seq(); }
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
317 return 0 unless( defined $seqstr);
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
318 if((CORE::length($seqstr) > 0) && ($seqstr !~ /^([A-Za-z\-\.\*\?]+)$/)) {
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
319 $self->warn("seq doesn't validate, mismatch is " .
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
320 ($seqstr =~ /([^A-Za-z\-\.\*\?]+)/g));
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
321 return 0;
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
322 }
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
323 return 1;
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
324 }
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
325
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
326 =head2 subseq
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
327
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
328 Title : subseq
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
329 Usage : $substring = $obj->subseq(10,40);
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
330 Function: returns the subseq from start to end, where the first base
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
331 is 1 and the number is inclusive, ie 1-2 are the first two
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
332 bases of the sequence
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
333 Returns : a string
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
334 Args : integer for start position
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
335 integer for end position
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
336 OR
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
337 Bio::LocationI location for subseq (strand honored)
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
338
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
339 =cut
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
340
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
341 sub subseq {
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
342 my ($self,$start,$end,$replace) = @_;
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
343
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
344 if( ref($start) && $start->isa('Bio::LocationI') ) {
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
345 my $loc = $start;
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
346 $replace = $end; # do we really use this anywhere? scary. HL
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
347 my $seq = "";
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
348 foreach my $subloc ($loc->each_Location()) {
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
349 my $piece = $self->subseq($subloc->start(),
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
350 $subloc->end(), $replace);
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
351 if($subloc->strand() < 0) {
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
352 $piece = Bio::PrimarySeq->new('-seq' => $piece)->revcom()->seq();
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
353 }
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
354 $seq .= $piece;
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
355 }
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
356 return $seq;
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
357 } elsif( defined $start && defined $end ) {
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
358 if( $start > $end ){
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
359 $self->throw("in subseq, start [$start] has to be ".
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
360 "greater than end [$end]");
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
361 }
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
362 if( $start <= 0 || $end > $self->length ) {
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
363 $self->throw("You have to have start positive\n\tand length less ".
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
364 "than the total length of sequence [$start:$end] ".
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
365 "Total ".$self->length."");
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
366 }
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
367
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
368 # remove one from start, and then length is end-start
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
369 $start--;
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
370 if( defined $replace ) {
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
371 return substr( $self->seq(), $start, ($end-$start), $replace);
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
372 } else {
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
373 return substr( $self->seq(), $start, ($end-$start));
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
374 }
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
375 } else {
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
376 $self->warn("Incorrect parameters to subseq - must be two integers ".
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
377 "or a Bio::LocationI object not ($start,$end)");
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
378 }
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
379 }
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
380
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
381 =head2 length
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
382
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
383 Title : length
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
384 Usage : $len = $seq->length();
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
385 Function: Get the length of the sequence in number of symbols (bases
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
386 or amino acids).
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
387
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
388 You can also set this attribute, even to a number that does
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
389 not match the length of the sequence string. This is useful
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
390 if you don''t want to set the sequence too, or if you want
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
391 to free up memory by unsetting the sequence. In the latter
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
392 case you could do e.g.
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
393
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
394 $seq->length($seq->length);
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
395 $seq->seq(undef);
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
396
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
397 Note that if you set the sequence to a value other than
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
398 undef at any time, the length attribute will be
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
399 invalidated, and the length of the sequence string will be
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
400 reported again. Also, we won''t let you lie about the length.
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
401
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
402 Example :
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
403 Returns : integer representing the length of the sequence.
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
404 Args : Optionally, the value on set
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
405
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
406 =cut
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
407
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
408 sub length {
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
409 my $self = shift;
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
410 my $len = CORE::length($self->seq() || '');
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
411
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
412 if(@_) {
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
413 my $val = shift;
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
414 if(defined($val) && $len && ($len != $val)) {
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
415 $self->throw("You're trying to lie about the length: ".
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
416 "is $len but you say ".$val);
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
417 }
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
418 $self->{'_seq_length'} = $val;
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
419 } elsif(defined($self->{'_seq_length'})) {
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
420 return $self->{'_seq_length'};
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
421 }
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
422 return $len;
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
423 }
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
424
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
425 =head2 display_id
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
426
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
427 Title : display_id or display_name
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
428 Usage : $id_string = $obj->display_id();
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
429 Function: returns the display id, aka the common name of the Sequence object.
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
430
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
431 The semantics of this is that it is the most likely string to
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
432 be used as an identifier of the sequence, and likely to have
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
433 "human" readability. The id is equivalent to the ID field of
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
434 the GenBank/EMBL databanks and the id field of the
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
435 Swissprot/sptrembl database. In fasta format, the >(\S+) is
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
436 presumed to be the id, though some people overload the id to
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
437 embed other information. Bioperl does not use any embedded
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
438 information in the ID field, and people are encouraged to use
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
439 other mechanisms (accession field for example, or extending
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
440 the sequence object) to solve this.
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
441
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
442 With the new Bio::DescribeableI interface, display_name aliases
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
443 to this method.
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
444
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
445 Returns : A string
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
446 Args : None
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
447
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
448
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
449 =cut
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
450
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
451 sub display_id {
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
452 my ($obj,$value) = @_;
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
453 if( defined $value) {
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
454 $obj->{'display_id'} = $value;
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
455 }
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
456 return $obj->{'display_id'};
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
457
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
458 }
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
459
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
460 =head2 accession_number
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
461
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
462 Title : accession_number or object_id
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
463 Usage : $unique_key = $obj->accession_number;
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
464 Function: Returns the unique biological id for a sequence, commonly
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
465 called the accession_number. For sequences from established
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
466 databases, the implementors should try to use the correct
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
467 accession number. Notice that primary_id() provides the
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
468 unique id for the implemetation, allowing multiple objects
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
469 to have the same accession number in a particular implementation.
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
470
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
471 For sequences with no accession number, this method should
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
472 return "unknown".
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
473
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
474 [Note this method name is likely to change in 1.3]
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
475
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
476 With the new Bio::IdentifiableI interface, this is aliased
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
477 to object_id
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
478
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
479 Returns : A string
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
480 Args : A string (optional) for setting
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
481
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
482 =cut
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
483
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
484 sub accession_number {
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
485 my( $obj, $acc ) = @_;
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
486
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
487 if (defined $acc) {
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
488 $obj->{'accession_number'} = $acc;
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
489 } else {
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
490 $acc = $obj->{'accession_number'};
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
491 $acc = 'unknown' unless defined $acc;
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
492 }
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
493 return $acc;
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
494 }
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
495
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
496 =head2 primary_id
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
497
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
498 Title : primary_id
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
499 Usage : $unique_key = $obj->primary_id;
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
500 Function: Returns the unique id for this object in this
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
501 implementation. This allows implementations to manage their
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
502 own object ids in a way the implementaiton can control
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
503 clients can expect one id to map to one object.
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
504
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
505 For sequences with no natural primary id, this method
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
506 should return a stringified memory location.
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
507
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
508 Returns : A string
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
509 Args : A string (optional, for setting)
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
510
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
511 =cut
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
512
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
513 sub primary_id {
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
514 my ($obj,$value) = @_;
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
515 if( defined $value) {
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
516 $obj->{'primary_id'} = $value;
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
517 }
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
518 if( ! exists $obj->{'primary_id'} ) {
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
519 return "$obj";
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
520 }
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
521 return $obj->{'primary_id'};
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
522
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
523 }
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
524
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
525
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
526 =head2 alphabet
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
527
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
528 Title : alphabet
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
529 Usage : if( $obj->alphabet eq 'dna' ) { /Do Something/ }
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
530 Function: Returns the type of sequence being one of
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
531 'dna', 'rna' or 'protein'. This is case sensitive.
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
532
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
533 This is not called <type> because this would cause
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
534 upgrade problems from the 0.5 and earlier Seq objects.
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
535
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
536 Returns : a string either 'dna','rna','protein'. NB - the object must
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
537 make a call of the type - if there is no type specified it
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
538 has to guess.
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
539 Args : none
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
540
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
541
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
542 =cut
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
543
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
544 sub alphabet {
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
545 my ($obj,$value) = @_;
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
546 if (defined $value) {
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
547 $value = lc $value;
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
548 unless ( $valid_type{$value} ) {
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
549 $obj->throw("Molecular type '$value' is not a valid type (".
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
550 join(',', map "'$_'", sort keys %valid_type) .
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
551 ") lowercase");
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
552 }
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
553 $obj->{'alphabet'} = $value;
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
554 }
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
555 return $obj->{'alphabet'};
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
556 }
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
557
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
558 =head2 desc
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
559
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
560 Title : desc or description
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
561 Usage : $obj->desc($newval)
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
562 Function: Get/set description of the sequence.
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
563
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
564 description is an alias for this for compliance with the
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
565 Bio::DescribeableI interface.
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
566
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
567 Example :
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
568 Returns : value of desc (a string)
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
569 Args : newvalue (a string or undef, optional)
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
570
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
571
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
572 =cut
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
573
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
574 sub desc{
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
575 my $self = shift;
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
576
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
577 return $self->{'desc'} = shift if @_;
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
578 return $self->{'desc'};
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
579 }
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
580
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
581 =head2 can_call_new
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
582
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
583 Title : can_call_new
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
584 Usage :
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
585 Function:
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
586 Example :
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
587 Returns : true
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
588 Args :
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
589
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
590
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
591 =cut
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
592
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
593 sub can_call_new {
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
594 my ($self) = @_;
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
595
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
596 return 1;
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
597
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
598 }
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
599
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
600 =head2 id
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
601
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
602 Title : id
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
603 Usage : $id = $seq->id()
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
604 Function: This is mapped on display_id
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
605 Example :
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
606 Returns :
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
607 Args :
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
608
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
609
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
610 =cut
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
611
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
612 sub id {
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
613 return shift->display_id(@_);
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
614 }
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
615
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
616 =head2 is_circular
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
617
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
618 Title : is_circular
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
619 Usage : if( $obj->is_circular) { /Do Something/ }
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
620 Function: Returns true if the molecule is circular
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
621 Returns : Boolean value
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
622 Args : none
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
623
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
624 =cut
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
625
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
626 sub is_circular{
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
627 my $self = shift;
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
628 return $self->{'is_circular'} = shift if @_;
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
629 return $self->{'is_circular'};
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
630 }
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
631
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
632 =head1 Methods for Bio::IdentifiableI compliance
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
633
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
634 =cut
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
635
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
636 =head2 object_id
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
637
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
638 Title : object_id
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
639 Usage : $string = $obj->object_id()
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
640 Function: a string which represents the stable primary identifier
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
641 in this namespace of this object. For DNA sequences this
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
642 is its accession_number, similarly for protein sequences
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
643
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
644 This is aliased to accession_number().
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
645 Returns : A scalar
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
646
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
647
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
648 =cut
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
649
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
650 sub object_id {
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
651 return shift->accession_number(@_);
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
652 }
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
653
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
654 =head2 version
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
655
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
656 Title : version
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
657 Usage : $version = $obj->version()
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
658 Function: a number which differentiates between versions of
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
659 the same object. Higher numbers are considered to be
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
660 later and more relevant, but a single object described
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
661 the same identifier should represent the same concept
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
662
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
663 Returns : A number
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
664
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
665 =cut
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
666
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
667 sub version{
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
668 my ($self,$value) = @_;
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
669 if( defined $value) {
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
670 $self->{'_version'} = $value;
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
671 }
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
672 return $self->{'_version'};
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
673 }
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
674
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
675
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
676 =head2 authority
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
677
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
678 Title : authority
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
679 Usage : $authority = $obj->authority()
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
680 Function: a string which represents the organisation which
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
681 granted the namespace, written as the DNS name for
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
682 organisation (eg, wormbase.org)
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
683
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
684 Returns : A scalar
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
685
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
686 =cut
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
687
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
688 sub authority {
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
689 my ($obj,$value) = @_;
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
690 if( defined $value) {
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
691 $obj->{'authority'} = $value;
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
692 }
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
693 return $obj->{'authority'};
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
694 }
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
695
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
696 =head2 namespace
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
697
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
698 Title : namespace
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
699 Usage : $string = $obj->namespace()
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
700 Function: A string representing the name space this identifier
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
701 is valid in, often the database name or the name
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
702 describing the collection
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
703
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
704 Returns : A scalar
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
705
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
706
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
707 =cut
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
708
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
709 sub namespace{
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
710 my ($self,$value) = @_;
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
711 if( defined $value) {
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
712 $self->{'namespace'} = $value;
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
713 }
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
714 return $self->{'namespace'} || "";
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
715 }
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
716
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
717 =head1 Methods for Bio::DescribableI compliance
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
718
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
719 This comprises of display_name and description.
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
720
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
721 =cut
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
722
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
723 =head2 display_name
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
724
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
725 Title : display_name
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
726 Usage : $string = $obj->display_name()
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
727 Function: A string which is what should be displayed to the user
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
728 the string should have no spaces (ideally, though a cautious
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
729 user of this interface would not assumme this) and should be
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
730 less than thirty characters (though again, double checking
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
731 this is a good idea)
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
732
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
733 This is aliased to display_id().
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
734 Returns : A scalar
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
735
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
736 =cut
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
737
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
738 sub display_name {
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
739 return shift->display_id(@_);
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
740 }
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
741
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
742 =head2 description
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
743
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
744 Title : description
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
745 Usage : $string = $obj->description()
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
746 Function: A text string suitable for displaying to the user a
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
747 description. This string is likely to have spaces, but
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
748 should not have any newlines or formatting - just plain
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
749 text. The string should not be greater than 255 characters
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
750 and clients can feel justified at truncating strings at 255
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
751 characters for the purposes of display
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
752
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
753 This is aliased to desc().
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
754 Returns : A scalar
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
755
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
756 =cut
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
757
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
758 sub description {
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
759 return shift->desc(@_);
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
760 }
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
761
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
762 =head1 Methods Inherited from Bio::PrimarySeqI
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
763
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
764 These methods are available on Bio::PrimarySeq, although they are
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
765 actually implemented on Bio::PrimarySeqI
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
766
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
767 =head2 revcom
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
768
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
769 Title : revcom
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
770 Usage : $rev = $seq->revcom()
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
771 Function: Produces a new Bio::SeqI implementing object which
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
772 is the reversed complement of the sequence. For protein
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
773 sequences this throws an exception of
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
774 "Sequence is a protein. Cannot revcom"
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
775
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
776 The id is the same id as the orginal sequence, and the
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
777 accession number is also indentical. If someone wants to
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
778 track that this sequence has be reversed, it needs to
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
779 define its own extensions
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
780
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
781 To do an inplace edit of an object you can go:
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
782
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
783 $seqobj = $seqobj->revcom();
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
784
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
785 This of course, causes Perl to handle the garbage
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
786 collection of the old object, but it is roughly speaking as
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
787 efficient as an inplace edit.
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
788
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
789 Returns : A new (fresh) Bio::SeqI object
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
790 Args : none
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
791
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
792 =cut
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
793
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
794 =head2 trunc
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
795
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
796 Title : trunc
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
797 Usage : $subseq = $myseq->trunc(10,100);
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
798 Function: Provides a truncation of a sequence,
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
799
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
800 Example :
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
801 Returns : a fresh Bio::SeqI implementing object
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
802 Args :
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
803
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
804
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
805 =cut
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
806
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
807 =head1 Internal methods
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
808
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
809 These are internal methods to PrimarySeq
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
810
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
811 =cut
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
812
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
813 =head2 _guess_alphabet
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
814
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
815 Title : _guess_alphabet
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
816 Usage :
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
817 Function:
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
818 Example :
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
819 Returns :
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
820 Args :
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
821
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
822
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
823 =cut
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
824
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
825 sub _guess_alphabet {
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
826 my ($self) = @_;
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
827 my ($str,$str2,$total,$atgc,$u,$type);
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
828
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
829 $str = $self->seq();
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
830 $str =~ s/\-\.\?//g;
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
831
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
832 $total = CORE::length($str);
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
833 if( $total == 0 ) {
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
834 $self->throw("Got a sequence with no letters in - ".
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
835 "cannot guess alphabet [$str]");
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
836 }
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
837
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
838 $u = ($str =~ tr/Uu//);
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
839 $atgc = ($str =~ tr/ATGCNatgcn//);
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
840
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
841 if( ($atgc / $total) > 0.85 ) {
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
842 $type = 'dna';
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
843 } elsif( (($atgc + $u) / $total) > 0.85 ) {
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
844 $type = 'rna';
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
845 } else {
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
846 $type = 'protein';
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
847 }
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
848
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
849 $self->alphabet($type);
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
850 return $type;
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
851 }
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
852
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
853 ############################################################################
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
854 # aliases due to name changes or to compensate for our lack of consistency #
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
855 ############################################################################
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
856
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
857 sub accession {
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
858 my $self = shift;
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
859
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
860 $self->warn(ref($self)."::accession is deprecated, ".
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
861 "use accession_number() instead");
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
862 return $self->accession_number(@_);
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
863 }
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
864
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
865 1;
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
866