annotate variant_effect_predictor/Bio/EnsEMBL/Compara/Member.pm @ 1:d6778b5d8382 draft default tip

Deleted selected files
author willmclaren
date Fri, 03 Aug 2012 10:05:43 -0400
parents 21066c0abaf5
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
0
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1 package Bio::EnsEMBL::Compara::Member;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
2
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
3 use strict;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
4 use Bio::Seq;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
5 use Bio::EnsEMBL::Utils::Argument;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
6 use Bio::EnsEMBL::Utils::Exception;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
7 use Bio::EnsEMBL::Gene;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
8 use Bio::EnsEMBL::Compara::GenomeDB;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
9
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
10
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
11 =head2 new (CONSTRUCTOR)
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
12
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
13 Arg [-DBID] : (opt)
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
14 : int $dbID (the database internal ID for this object)
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
15 Arg [-ADAPTOR]
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
16 : Bio::EnsEMBL::Compara::DBSQL::Member $adaptor
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
17 (the adaptor for connecting to the database)
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
18 Arg [-DESCRIPTION] (opt)
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
19 : string $description
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
20 Arg [-SOURCE_NAME] (opt)
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
21 : string $source_name
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
22 (e.g., "ENSEMBLGENE", "ENSEMBLPEP", "Uniprot/SWISSPROT", "Uniprot/SPTREMBL")
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
23 Arg [-TAXON_ID] (opt)
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
24 : int $taxon_id
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
25 (NCBI taxonomy id for the member)
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
26 Arg [-GENOME_DB_ID] (opt)
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
27 : int $genome_db_id
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
28 (the $genome_db->dbID for a species in the database)
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
29 Arg [-SEQUENCE_ID] (opt)
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
30 : int $sequence_id
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
31 (the $sequence_id for the sequence table in the database)
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
32 Example :
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
33 my $member = new Bio::EnsEMBL::Compara::Member;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
34 Description: Creates a new Member object
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
35 Returntype : Bio::EnsEMBL::Compara::Member
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
36 Exceptions : none
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
37 Caller : general
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
38 Status : Stable
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
39
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
40 =cut
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
41
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
42 sub new {
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
43 my ($class, @args) = @_;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
44
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
45 my $self = bless {}, $class;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
46
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
47 if (scalar @args) {
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
48 #do this explicitly.
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
49 my ($dbid, $stable_id, $description, $source_name, $adaptor, $taxon_id, $genome_db_id, $sequence_id) = rearrange([qw(DBID STABLE_ID DESCRIPTION SOURCE_NAME ADAPTOR TAXON_ID GENOME_DB_ID SEQUENCE_ID)], @args);
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
50
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
51 $dbid && $self->dbID($dbid);
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
52 $stable_id && $self->stable_id($stable_id);
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
53 $description && $self->description($description);
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
54 $source_name && $self->source_name($source_name);
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
55 $adaptor && $self->adaptor($adaptor);
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
56 $taxon_id && $self->taxon_id($taxon_id);
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
57 $genome_db_id && $self->genome_db_id($genome_db_id);
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
58 $sequence_id && $self->sequence_id($sequence_id);
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
59 }
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
60
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
61 return $self;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
62 }
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
63
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
64
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
65 =head2 copy
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
66
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
67 Arg [1] : object $parent_object (optional)
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
68 Example :
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
69 Description: copies the object, optionally by topping up a given structure (to support multiple inheritance)
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
70 Returntype :
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
71 Exceptions :
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
72 Caller :
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
73
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
74 =cut
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
75
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
76 sub copy {
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
77 my $self = shift;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
78
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
79 my $mycopy = @_ ? shift : {};
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
80 bless $mycopy, 'Bio::EnsEMBL::Compara::Member';
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
81
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
82 $mycopy->dbID($self->dbID);
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
83 $mycopy->stable_id($self->stable_id);
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
84 $mycopy->version($self->version);
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
85 $mycopy->description($self->description);
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
86 $mycopy->source_name($self->source_name);
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
87 #$mycopy->adaptor($self->adaptor);
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
88 $mycopy->chr_name($self->chr_name);
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
89 $mycopy->chr_start($self->chr_start);
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
90 $mycopy->chr_end($self->chr_end);
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
91 $mycopy->chr_strand($self->chr_strand);
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
92 $mycopy->taxon_id($self->taxon_id);
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
93 $mycopy->genome_db_id($self->genome_db_id);
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
94 $mycopy->sequence_id($self->sequence_id);
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
95 $mycopy->gene_member_id($self->gene_member_id);
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
96 $mycopy->display_label($self->display_label);
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
97
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
98 return $mycopy;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
99 }
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
100
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
101
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
102 =head2 new_fast
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
103
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
104 Arg [1] : hash reference $hashref
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
105 Example : none
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
106 Description: This is an ultra fast constructor which requires knowledge of
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
107 the objects internals to be used.
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
108 Returntype :
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
109 Exceptions : none
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
110 Caller :
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
111
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
112 =cut
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
113
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
114 sub new_fast {
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
115 my ($class, $hashref) = @_;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
116
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
117 return bless $hashref, $class;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
118 }
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
119
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
120 =head2 new_from_gene
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
121
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
122 Args : Requires both an Bio::Ensembl:Gene object and a
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
123 : Bio::Ensembl:Compara:GenomeDB object
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
124 Example : $member = Bio::EnsEMBL::Compara::Member->new_from_gene(
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
125 -gene => $gene,
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
126 -genome_db => $genome_db);
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
127 Description: contructor method which takes an Ensembl::Gene object
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
128 and Compara:GenomeDB object and creates a new Member object
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
129 translating from the Gene object
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
130 Returntype : Bio::Ensembl::Compara::Member
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
131 Exceptions :
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
132 Caller :
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
133
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
134 =cut
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
135
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
136 sub new_from_gene {
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
137 my ($class, @args) = @_;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
138 my $self = $class->new(@args);
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
139
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
140 if (scalar @args) {
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
141
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
142 my ($gene, $genome_db) = rearrange([qw(GENE GENOME_DB)], @args);
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
143
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
144 unless(defined($gene) and $gene->isa('Bio::EnsEMBL::Gene')) {
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
145 throw(
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
146 "gene arg must be a [Bio::EnsEMBL::Gene] ".
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
147 "not a [$gene]");
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
148 }
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
149 unless(defined($genome_db) and $genome_db->isa('Bio::EnsEMBL::Compara::GenomeDB')) {
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
150 throw(
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
151 "genome_db arg must be a [Bio::EnsEMBL::Compara::GenomeDB] ".
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
152 "not a [$genome_db]");
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
153 }
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
154 unless (defined $gene->stable_id) {
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
155 throw("COREDB error: does not contain gene_stable_id for gene_id ". $gene->dbID."\n");
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
156 }
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
157
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
158 $self->stable_id($gene->stable_id);
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
159 $self->taxon_id($genome_db->taxon_id);
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
160 $self->description($gene->description);
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
161 $self->genome_db_id($genome_db->dbID);
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
162 $self->chr_name($gene->seq_region_name);
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
163 $self->chr_start($gene->seq_region_start);
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
164 $self->chr_end($gene->seq_region_end);
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
165 $self->chr_strand($gene->seq_region_strand);
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
166 $self->source_name("ENSEMBLGENE");
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
167 $self->version($gene->version);
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
168 }
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
169 return $self;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
170 }
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
171
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
172
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
173 =head2 new_from_transcript
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
174
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
175 Arg[1] : Bio::Ensembl:Transcript object
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
176 Arg[2] : Bio::Ensembl:Compara:GenomeDB object
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
177 Arg[3] : string where value='translate' causes transcript object to translate
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
178 to a peptide
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
179 Example : $member = Bio::EnsEMBL::Compara::Member->new_from_transcript(
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
180 $transcript, $genome_db,
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
181 -translate);
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
182 Description: contructor method which takes an Ensembl::Gene object
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
183 and Compara:GenomeDB object and creates a new Member object
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
184 translating from the Gene object
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
185 Returntype : Bio::Ensembl::Compara::Member
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
186 Exceptions :
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
187 Caller :
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
188
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
189 =cut
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
190
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
191 sub new_from_transcript {
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
192 my ($class, @args) = @_;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
193 my $self = $class->new(@args);
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
194 my $peptideBioSeq;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
195 my $seq_string;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
196
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
197 my ($transcript, $genome_db, $translate, $description) = rearrange([qw(TRANSCRIPT GENOME_DB TRANSLATE DESCRIPTION)], @args);
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
198 #my ($transcript, $genome_db, $translate) = @args;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
199
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
200 unless(defined($transcript) and $transcript->isa('Bio::EnsEMBL::Transcript')) {
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
201 throw(
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
202 "transcript arg must be a [Bio::EnsEMBL::Transcript]".
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
203 "not a [$transcript]");
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
204 }
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
205 unless(defined($genome_db) and $genome_db->isa('Bio::EnsEMBL::Compara::GenomeDB')) {
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
206 throw(
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
207 "genome_db arg must be a [Bio::EnsEMBL::Compara::GenomeDB] ".
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
208 "not a [$genome_db]");
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
209 }
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
210 $self->taxon_id($genome_db->taxon_id);
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
211 if(defined($description)) { $self->description($description); }
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
212 else { $self->description("NULL"); }
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
213 $self->genome_db_id($genome_db->dbID);
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
214 $self->chr_name($transcript->seq_region_name);
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
215 $self->chr_start($transcript->coding_region_start);
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
216 $self->chr_end($transcript->coding_region_end);
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
217 $self->chr_strand($transcript->seq_region_strand);
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
218 $self->version($transcript->translation->version) if ($translate eq 'yes');
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
219
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
220 if(($translate eq 'translate') or ($translate eq 'yes')) {
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
221 if(not defined($transcript->translation)) {
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
222 throw("request to translate a transcript without a defined translation",
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
223 $transcript->stable_id);
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
224 }
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
225 unless (defined $transcript->translation->stable_id) {
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
226 throw("COREDB error: does not contain translation stable id for translation_id ".$transcript->translation->dbID."\n");
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
227 }
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
228
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
229 $self->stable_id($transcript->translation->stable_id);
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
230 $self->source_name("ENSEMBLPEP");
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
231
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
232 unless ($peptideBioSeq = $transcript->translate) {
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
233 throw("COREDB error: unable to get a BioSeq translation from ". $transcript->stable_id);
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
234 }
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
235 eval {
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
236 $seq_string = $peptideBioSeq->seq;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
237 };
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
238 throw "COREDB error: can't get seq from peptideBioSeq" if $@;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
239 # OR
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
240 #$seq_string = $transcript->translation->seq;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
241
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
242 if ($seq_string =~ /^X+$/) {
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
243 warn("X+ in sequence from translation " . $transcript->translation->stable_id."\n");
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
244 }
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
245 elsif (length($seq_string) == 0) {
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
246 warn("zero length sequence from translation " . $transcript->translation->stable_id."\n");
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
247 }
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
248 else {
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
249 #$seq_string =~ s/(.{72})/$1\n/g;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
250 $self->sequence($seq_string);
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
251 }
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
252 } elsif ($translate eq 'ncrna') {
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
253 unless (defined $transcript->stable_id) {
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
254 throw("COREDB error: does not contain transcript stable id for transcript_id ".$transcript->dbID."\n");
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
255 }
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
256 $self->stable_id($transcript->stable_id);
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
257 $self->source_name("ENSEMBLTRANS");
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
258
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
259 unless ($seq_string = $transcript->spliced_seq) {
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
260 throw("COREDB error: unable to get a BioSeq spliced_seq from ". $transcript->stable_id);
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
261 }
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
262 if (length($seq_string) == 0) {
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
263 warn("zero length sequence from transcript " . $transcript->stable_id."\n");
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
264 }
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
265 $self->sequence($seq_string);
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
266 }
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
267
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
268 #print("Member->new_from_transcript\n");
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
269 #print(" source_name = '" . $self->source_name . "'\n");
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
270 #print(" stable_id = '" . $self->stable_id . "'\n");
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
271 #print(" taxon_id = '" . $self->taxon_id . "'\n");
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
272 #print(" chr_name = '" . $self->chr_name . "'\n");
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
273 return $self;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
274 }
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
275
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
276
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
277 =head2 member_id
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
278
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
279 Arg [1] : int $member_id (optional)
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
280 Example :
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
281 Description:
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
282 Returntype :
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
283 Exceptions :
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
284 Caller :
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
285
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
286 =cut
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
287
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
288 sub member_id {
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
289 my $self = shift;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
290 return $self->dbID(@_);
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
291 }
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
292
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
293
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
294 =head2 dbID
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
295
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
296 Arg [1] : int $dbID (optional)
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
297 Example :
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
298 Description:
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
299 Returntype :
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
300 Exceptions :
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
301 Caller :
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
302
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
303 =cut
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
304
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
305 sub dbID {
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
306 my $self = shift;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
307 $self->{'_dbID'} = shift if(@_);
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
308 return $self->{'_dbID'};
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
309 }
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
310
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
311 =head2 stable_id
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
312
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
313 Arg [1] : string $stable_id (optional)
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
314 Example :
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
315 Description:
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
316 Returntype :
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
317 Exceptions :
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
318 Caller :
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
319
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
320 =cut
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
321
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
322 sub stable_id {
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
323 my $self = shift;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
324 $self->{'_stable_id'} = shift if(@_);
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
325 return $self->{'_stable_id'};
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
326 }
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
327
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
328 =head2 display_label
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
329
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
330 Arg [1] : string $display_label (optional)
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
331 Example :
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
332 Description:
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
333 Returntype :
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
334 Exceptions :
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
335 Caller :
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
336
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
337 =cut
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
338
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
339 sub display_label {
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
340 my $self = shift;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
341 $self->{'_display_label'} = shift if(@_);
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
342 return $self->{'_display_label'};
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
343 }
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
344
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
345 =head2 version
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
346
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
347 Arg [1] :
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
348 Example :
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
349 Description:
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
350 Returntype :
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
351 Exceptions :
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
352 Caller :
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
353
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
354 =cut
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
355
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
356 sub version {
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
357 my $self = shift;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
358 $self->{'_version'} = shift if(@_);
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
359 $self->{'_version'} = 0 unless(defined($self->{'_version'}));
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
360 return $self->{'_version'};
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
361 }
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
362
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
363 =head2 description
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
364
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
365 Arg [1] : string $description (optional)
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
366 Example :
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
367 Description:
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
368 Returntype : string
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
369 Exceptions :
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
370 Caller :
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
371
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
372 =cut
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
373
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
374 sub description {
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
375 my $self = shift;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
376 $self->{'_description'} = shift if(@_);
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
377 return $self->{'_description'};
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
378 }
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
379
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
380 =head2 source_name
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
381
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
382 =cut
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
383
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
384 sub source_name {
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
385 my $self = shift;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
386 $self->{'_source_name'} = shift if (@_);
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
387 return $self->{'_source_name'};
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
388 }
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
389
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
390 =head2 adaptor
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
391
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
392 Arg [1] : string $adaptor (optional)
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
393 corresponding to a perl module
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
394 Example :
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
395 Description:
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
396 Returntype :
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
397 Exceptions :
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
398 Caller :
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
399
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
400 =cut
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
401
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
402 sub adaptor {
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
403 my $self = shift;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
404 $self->{'_adaptor'} = shift if(@_);
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
405 return $self->{'_adaptor'};
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
406 }
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
407
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
408 =head2 chr_name
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
409
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
410 =cut
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
411
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
412 sub chr_name {
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
413 my $self = shift;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
414 $self->{'_chr_name'} = shift if (@_);
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
415 return $self->{'_chr_name'};
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
416 }
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
417
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
418 =head2 chr_start
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
419
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
420 =cut
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
421
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
422 sub chr_start {
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
423 my $self = shift;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
424 $self->{'_chr_start'} = shift if (@_);
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
425 return $self->{'_chr_start'};
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
426 }
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
427
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
428 =head2 chr_end
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
429
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
430 =cut
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
431
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
432 sub chr_end {
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
433 my $self = shift;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
434 $self->{'_chr_end'} = shift if (@_);
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
435 return $self->{'_chr_end'};
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
436 }
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
437
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
438 =head2 chr_strand
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
439
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
440 Arg [1] : integer
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
441 Description: Returns the strand of the member. Defined strands are 1 or -1.
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
442 0 is undefined strand.
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
443 Returntype : 1,0,-1
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
444 Exceptions : none
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
445 Caller : general
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
446
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
447 =cut
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
448
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
449 sub chr_strand {
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
450 my $self = shift;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
451 $self->{'_chr_strand'} = shift if (@_);
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
452 $self->{'_chr_strand'}='0' unless(defined($self->{'_chr_strand'}));
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
453 return $self->{'_chr_strand'};
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
454 }
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
455
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
456 =head2 taxon_id
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
457
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
458 =cut
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
459
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
460 sub taxon_id {
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
461 my $self = shift;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
462 $self->{'_taxon_id'} = shift if (@_);
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
463 return $self->{'_taxon_id'};
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
464 }
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
465
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
466 =head2 taxon
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
467
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
468 =cut
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
469
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
470 sub taxon {
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
471 my $self = shift;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
472
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
473 if (@_) {
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
474 my $taxon = shift;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
475 unless ($taxon->isa('Bio::EnsEMBL::Compara::NCBITaxon')) {
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
476 throw(
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
477 "taxon arg must be a [Bio::EnsEMBL::Compara::NCBITaxon".
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
478 "not a [$taxon]");
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
479 }
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
480 $self->{'_taxon'} = $taxon;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
481 $self->taxon_id($taxon->ncbi_taxid);
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
482 } else {
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
483 unless (defined $self->{'_taxon'}) {
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
484 unless (defined $self->taxon_id) {
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
485 throw("can't fetch Taxon without a taxon_id");
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
486 }
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
487 my $NCBITaxonAdaptor = $self->adaptor->db->get_NCBITaxonAdaptor;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
488 $self->{'_taxon'} = $NCBITaxonAdaptor->fetch_node_by_taxon_id($self->taxon_id);
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
489 }
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
490 }
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
491
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
492 return $self->{'_taxon'};
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
493 }
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
494
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
495 =head2 genome_db_id
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
496
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
497 =cut
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
498
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
499 sub genome_db_id {
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
500 my $self = shift;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
501 $self->{'_genome_db_id'} = shift if (@_);
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
502 return $self->{'_genome_db_id'};
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
503 }
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
504
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
505 =head2 genome_db
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
506
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
507 =cut
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
508
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
509 sub genome_db {
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
510 my $self = shift;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
511
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
512 if (@_) {
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
513 my $genome_db = shift;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
514 unless ($genome_db->isa('Bio::EnsEMBL::Compara::GenomeDB')) {
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
515 throw(
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
516 "arg must be a [Bio::EnsEMBL::Compara::GenomeDB".
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
517 "not a [$genome_db]");
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
518 }
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
519 $self->{'_genome_db'} = $genome_db;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
520 $self->genome_db_id($genome_db->dbID);
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
521 } else {
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
522 unless (defined $self->{'_genome_db'}) {
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
523 unless (defined $self->genome_db_id and defined $self->adaptor) {
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
524 throw("can't fetch GenomeDB without an adaptor and genome_db_id");
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
525 }
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
526 my $GenomeDBAdaptor = $self->adaptor->db->get_GenomeDBAdaptor;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
527 $self->{'_genome_db'} = $GenomeDBAdaptor->fetch_by_dbID($self->genome_db_id);
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
528 }
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
529 }
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
530
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
531 return $self->{'_genome_db'};
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
532 }
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
533
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
534 =head2 sequence
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
535
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
536 Arg [1] : string $sequence
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
537 Example : my $seq = $member->sequence;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
538 Description: Get/set the sequence string of this member
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
539 Will lazy load by sequence_id if needed and able
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
540 Returntype : string
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
541 Exceptions : none
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
542 Caller : general
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
543
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
544 =cut
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
545
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
546 sub sequence {
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
547 my $self = shift;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
548
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
549 if(@_) {
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
550 $self->{'_seq_length'} = undef;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
551 $self->{'_sequence'} = shift;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
552 $self->{'_seq_length'} = length($self->{'_sequence'}) if(defined($self->{'_sequence'}));
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
553 return $self->{'_sequence'};
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
554 }
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
555
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
556 if(!defined($self->{'_sequence'}) and
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
557 defined($self->sequence_id()) and
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
558 defined($self->adaptor))
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
559 {
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
560 $self->{'_sequence'} = $self->adaptor->db->get_SequenceAdaptor->fetch_by_dbID($self->sequence_id);
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
561 $self->{'_seq_length'} = length($self->{'_sequence'}) if(defined($self->{'_sequence'}));
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
562 }
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
563
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
564 return $self->{'_sequence'};
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
565 }
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
566
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
567 =head2 sequence_exon_cased
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
568
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
569 Args : none
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
570 Example : my $sequence_exon_cased = $member->sequence_exon_cased;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
571
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
572 Description: Get/set the sequence string of this peptide member with
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
573 alternating upper and lower case corresponding to the translateable exons.
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
574 Returntype : string
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
575 Exceptions : none
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
576 Caller : general
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
577
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
578 =cut
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
579
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
580 sub sequence_exon_cased {
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
581 my $self = shift;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
582
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
583 my $sequence = $self->sequence;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
584 my $trans = $self->get_Transcript;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
585 my @exons = @{$trans->get_all_translateable_Exons};
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
586 return $sequence if (1 == scalar @exons);
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
587
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
588 my %splice_site;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
589 my $pep_len = 0;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
590 my $overlap_len = 0;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
591 while (my $exon = shift @exons) {
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
592 my $exon_len = $exon->length;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
593 my $pep_seq = $exon->peptide($trans)->length;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
594 # remove the first char of seq if overlap ($exon->peptide()) return full overlapping exon seq
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
595 $pep_seq -= 1 if ($overlap_len);
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
596 $pep_len += $pep_seq;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
597 if ($overlap_len = (($exon_len + $overlap_len ) %3)){ # if there is an overlap
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
598 $splice_site{$pep_len-1}{'overlap'} = $pep_len -1; # stores overlapping aa-exon boundary
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
599 } else {
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
600 $overlap_len = 0;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
601 }
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
602 $splice_site{$pep_len}{'phase'} = $overlap_len; # positions of exon boundary
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
603 }
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
604
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
605 my @exon_sequences = ();
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
606 foreach my $pep_len (sort {$b<=>$a} keys %splice_site) { # We start from the end
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
607 next if (defined($splice_site{$pep_len}{'overlap'}));
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
608 next if ($pep_len > length($sequence)); # Get rid of 1 codon STOP exons in the protein
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
609 my $length = $pep_len;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
610 $length-- if (defined($splice_site{$pep_len}{'phase'}) && 1 == $splice_site{$pep_len}{'phase'});
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
611 my $peptide;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
612 $peptide = substr($sequence,$length,length($sequence),'');
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
613 unshift(@exon_sequences, $peptide);
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
614 }
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
615 unshift(@exon_sequences, $sequence); # First exon (last piece of sequence left)
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
616
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
617 my $splice = 1;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
618 foreach my $exon_sequence (@exon_sequences) {
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
619 if ($splice % 2 == 0) {
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
620 $exon_sequence = lc($exon_sequence);
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
621 }
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
622 $splice++;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
623 }
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
624 my $seqsplice = join("", @exon_sequences);
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
625
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
626 return $seqsplice;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
627 }
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
628
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
629 sub sequence_exon_bounded {
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
630 my $self = shift;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
631
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
632 if(@_) {
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
633 $self->{'_sequence_exon_bounded'} = shift;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
634 return $self->{'_sequence_exon_bounded'};
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
635 }
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
636
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
637 if(!defined($self->{'_sequence_exon_bounded'})) {
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
638 $self->{'_sequence_exon_bounded'} = $self->adaptor->db->get_SequenceAdaptor->fetch_sequence_exon_bounded_by_member_id($self->member_id);
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
639 }
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
640
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
641 if(!defined($self->{'_sequence_exon_bounded'})) {
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
642 $self->{'_sequence_exon_bounded'} = $self->_compose_sequence_exon_bounded;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
643 }
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
644
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
645 return $self->{'_sequence_exon_bounded'};
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
646 }
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
647
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
648
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
649 sub _compose_sequence_exon_bounded {
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
650 my $self = shift;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
651
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
652 my $sequence = $self->sequence;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
653 my $trans = $self->get_Transcript;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
654 my @exons = @{$trans->get_all_translateable_Exons};
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
655 return $sequence if (1 == scalar @exons);
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
656
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
657 my %splice_site;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
658 my $pep_len = 0;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
659 my $overlap_len = 0;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
660 while (my $exon = shift @exons) {
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
661 my $exon_len = $exon->length;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
662 my $pep_seq = $exon->peptide($trans)->length;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
663 # remove the first char of seq if overlap ($exon->peptide()) return full overlapping exon seq
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
664 $pep_seq -= 1 if ($overlap_len);
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
665 $pep_len += $pep_seq;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
666 if ($overlap_len = (($exon_len + $overlap_len ) %3)){ # if there is an overlap
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
667 $splice_site{$pep_len-1}{'overlap'} = $pep_len -1; # stores overlapping aa-exon boundary
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
668 } else {
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
669 $overlap_len = 0;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
670 }
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
671 $splice_site{$pep_len}{'phase'} = $overlap_len; # positions of exon boundary
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
672 }
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
673
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
674 my $seqsplice = '';
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
675 foreach my $pep_len (sort {$b<=>$a} keys %splice_site) { # We start from the end
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
676 next if (defined($splice_site{$pep_len}{'overlap'}));
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
677 next if ($pep_len > length($sequence)); # Get rid of 1 codon STOP exons in the protein
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
678 my $length = $pep_len;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
679 $length-- if (defined($splice_site{$pep_len}{'phase'}) && 1 == $splice_site{$pep_len}{'phase'});
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
680 my $peptide;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
681 $peptide = substr($sequence,$length,length($sequence),'');
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
682 $seqsplice = $peptide . $seqsplice;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
683 $seqsplice = 'o' . $seqsplice if (0 == $splice_site{$pep_len}{'phase'});
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
684 $seqsplice = 'b' . $seqsplice if (1 == $splice_site{$pep_len}{'phase'});
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
685 $seqsplice = 'j' . $seqsplice if (2 == $splice_site{$pep_len}{'phase'});
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
686 }
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
687 $seqsplice = $sequence . $seqsplice; # First exon AS IS
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
688
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
689 return $seqsplice;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
690 }
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
691
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
692 sub sequence_cds {
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
693 my $self = shift;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
694
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
695 if(@_) {
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
696 $self->{'_sequence_cds'} = shift;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
697 return $self->{'_sequence_cds'};
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
698 }
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
699
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
700 if(!defined($self->{'_sequence_cds'})) {
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
701 $self->{'_sequence_cds'} = $self->adaptor->db->get_SequenceAdaptor->fetch_sequence_cds_by_member_id($self->member_id);
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
702 }
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
703
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
704 if(!defined($self->{'_sequence_cds'})) {
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
705 $self->{'_sequence_cds'} = $self->get_Transcript->translateable_seq;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
706 }
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
707
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
708 return $self->{'_sequence_cds'};
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
709 }
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
710
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
711 # GJ 2008-11-17
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
712 # Returns the amino acid sequence with exon boundaries denoted as O, B, or J depending on the phase (O=0, B=1, J=2)
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
713 sub get_exon_bounded_sequence {
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
714 my $self = shift;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
715 my $numbers = shift;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
716 my $transcript = $self->get_Transcript;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
717
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
718 # The get_all_translateable_exons creates a list of reformatted "translateable" exon sequences.
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
719 # When the exon phase is 1 or 2, there will be duplicated residues at the end and start of exons.
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
720 # We'll deal with this during the exon loop.
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
721 my @exons = @{$transcript->get_all_translateable_Exons};
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
722 my $seq_string = "";
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
723 # for my $ex (@exons) {
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
724 while (my $ex = shift @exons) {
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
725 my $seq = $ex->peptide($transcript)->seq;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
726
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
727 # PHASE HANDLING
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
728 my $phase = $ex->phase;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
729 my $end_phase = $ex->end_phase;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
730
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
731 # First, cut off repeated end residues.
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
732 if ($end_phase == 1 && 0 < scalar @exons) {
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
733 # We only own 1/3, so drop the last residue.
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
734 $seq = substr($seq,0,-1);
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
735 }
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
736
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
737 # Now cut off repeated start residues.
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
738 if ($phase == 2) {
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
739 # We only own 1/3, so drop the first residue.
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
740 $seq = substr($seq, 1);
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
741 }
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
742
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
743 if ($end_phase > -1) {
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
744 $seq = $seq . 'o' if ($end_phase == 0);
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
745 $seq = $seq . 'b' if ($end_phase == 1);
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
746 $seq = $seq . 'j' if ($end_phase == 2);
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
747 }
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
748 #print "Start_phase: $phase End_phase: $end_phase\t$seq\n";
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
749 $seq_string .= $seq;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
750 }
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
751 if (defined $numbers) {
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
752 $seq_string =~ s/o/0/g; $seq_string =~ s/b/1/g; $seq_string =~ s/j/2/g;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
753 }
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
754 return $seq_string;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
755 }
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
756
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
757 =head2 seq_length
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
758
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
759 Example : my $seq_length = $member->seq_length;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
760 Description: get the sequence length of this member
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
761 Returntype : int
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
762 Exceptions : none
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
763 Caller : general
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
764
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
765 =cut
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
766
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
767 sub seq_length {
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
768 my $self = shift;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
769
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
770 unless(defined($self->{'_seq_length'})) {
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
771 #need to check case if user is calling seq_length first
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
772 #call $self->sequence (to lazy load if needed)
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
773 my $seq = $self->sequence;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
774 $self->{'_seq_length'} = length($seq) if(defined($seq));
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
775 }
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
776 return $self->{'_seq_length'};
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
777 }
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
778
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
779
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
780 =head2 sequence_id
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
781
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
782 Arg [1] : int $sequence_id
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
783 Example : my $sequence_id = $member->sequence_id;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
784 Description: Extracts the sequence_id of this member
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
785 Returntype : int
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
786 Exceptions : none
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
787 Caller : general
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
788
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
789 =cut
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
790
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
791 sub sequence_id {
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
792 my $self = shift;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
793 $self->{'_sequence_id'} = shift if(@_);
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
794 if(!defined($self->{'_sequence_id'})) { $self->{'_sequence_id'}=0; }
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
795 return $self->{'_sequence_id'};
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
796 }
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
797
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
798 =head2 gene_member_id
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
799
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
800 Arg [1] : int $gene_member_id
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
801 Example : my $gene_member_id = $member->gene_member_id;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
802 Description: Gene_member_id of this protein member
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
803 Returntype : int
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
804 Exceptions : none
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
805 Caller : general
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
806
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
807 =cut
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
808
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
809 sub gene_member_id {
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
810 my $self = shift;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
811 $self->{'_gene_member_id'} = shift if(@_);
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
812 return $self->{'_gene_member_id'};
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
813 }
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
814
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
815
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
816 =head2 bioseq
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
817
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
818 Args : none
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
819 Example : my $primaryseq = $member->primaryseq;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
820 Description: returns sequence this member as a Bio::Seq object
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
821 Returntype : Bio::Seq object
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
822 Exceptions : none
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
823 Caller : general
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
824
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
825 =cut
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
826
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
827 sub bioseq {
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
828 my $self = shift;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
829
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
830 throw("Member stable_id undefined") unless defined($self->stable_id());
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
831 throw("No sequence for member " . $self->stable_id()) unless defined($self->sequence());
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
832
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
833 my $seqname;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
834 if (defined($self->genome_db_id) and defined($self->dbID)) {
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
835 $seqname = "IDs:" . $self->genome_db_id . ":" . $self->dbID . " " .
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
836 $self->source_name . ":" . $self->stable_id;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
837 } else {
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
838 $seqname = $self->source_name . ":" . $self->stable_id;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
839 }
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
840 my $seq = Bio::Seq->new(-seq => $self->sequence(),
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
841 -primary_id => "member_id_".$self->dbID,
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
842 -display_id => "member_id_".$self->dbID,
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
843 -desc => $seqname ."|". $self->description(),
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
844 );
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
845 return $seq;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
846 }
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
847
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
848 =head2 gene_member
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
849
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
850 Arg[1] : Bio::EnsEMBL::Compara::Member $geneMember (optional)
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
851 Example : my $gene_member = $member->gene_member;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
852 Description: returns gene member object for this protein member
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
853 Returntype : Bio::EnsEMBL::Compara::Member object
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
854 Exceptions : if arg[0] is not a Bio::EnsEMBL::Compara::Member object
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
855 Caller : MemberAdaptor(set), general
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
856
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
857 =cut
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
858
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
859 sub gene_member {
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
860 my $self = shift;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
861 my $gene_member = shift;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
862
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
863 if ($gene_member) {
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
864 throw("arg must be a [Bio::EnsEMBL::Compara::Member] not a [$gene_member]")
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
865 unless ($gene_member->isa('Bio::EnsEMBL::Compara::Member'));
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
866 $self->{'_gene_member'} = $gene_member;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
867 }
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
868 if(!defined($self->{'_gene_member'}) and
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
869 defined($self->adaptor) and $self->dbID)
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
870 {
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
871 $self->{'_gene_member'} = $self->adaptor->db->get_MemberAdaptor->fetch_gene_for_peptide_member_id($self->dbID);
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
872 }
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
873 return $self->{'_gene_member'};
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
874 }
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
875
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
876 =head2 print_member
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
877
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
878 Arg[1] : string to be prrinted instead of "\n"
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
879 Example : $member->print_member("BRH");
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
880 Description: used for debugging, prints out key descriptive elements
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
881 of member
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
882 Returntype : none
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
883 Exceptions : none
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
884 Caller : general
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
885
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
886 =cut
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
887
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
888 sub print_member
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
889
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
890 {
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
891 my $self = shift;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
892 my $postfix = shift;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
893
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
894 printf(" %s %s(%d)\t%s : %d-%d",$self->source_name, $self->stable_id,
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
895 $self->dbID,$self->chr_name,$self->chr_start, $self->chr_end);
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
896 if($postfix) { print(" $postfix"); }
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
897 else { print("\n"); }
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
898 }
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
899
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
900
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
901 =head2 get_Gene
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
902
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
903 Args : none
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
904 Example : $gene = $member->get_Gene
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
905 Description: if member is an 'ENSEMBLGENE' returns Bio::EnsEMBL::Gene object
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
906 by connecting to ensembl genome core database
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
907 REQUIRES properly setup Registry conf file or
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
908 manually setting genome_db->db_adaptor for each genome.
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
909 Returntype : Bio::EnsEMBL::Gene or undef
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
910 Exceptions : none
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
911 Caller : general
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
912
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
913 =cut
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
914
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
915 sub get_Gene {
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
916 my $self = shift;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
917
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
918 return $self->{'core_gene'} if($self->{'core_gene'});
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
919
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
920 unless($self->genome_db and
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
921 $self->genome_db->db_adaptor and
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
922 $self->genome_db->db_adaptor->isa('Bio::EnsEMBL::DBSQL::DBAdaptor'))
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
923 {
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
924 throw("unable to connect to core ensembl database: missing registry and genome_db.locator");
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
925 }
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
926
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
927 my $coreDBA = $self->genome_db->db_adaptor;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
928 if($self->source_name eq 'ENSEMBLGENE') {
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
929 $self->{'core_gene'} = $coreDBA->get_GeneAdaptor->fetch_by_stable_id($self->stable_id);
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
930 }
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
931 if($self->source_name eq 'ENSEMBLPEP') {
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
932 $self->{'core_gene'} = $coreDBA->get_GeneAdaptor->fetch_by_stable_id($self->gene_member->stable_id);
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
933 }
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
934 return $self->{'core_gene'};
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
935 }
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
936
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
937 =head2 get_Transcript
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
938
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
939 Args : none
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
940 Example : $transcript = $member->get_Transcript
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
941 Description: if member is an 'ENSEMBLPEP' returns Bio::EnsEMBL::Transcript object
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
942 by connecting to ensembl genome core database
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
943 REQUIRES properly setup Registry conf file or
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
944 manually setting genome_db->db_adaptor for each genome.
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
945 Returntype : Bio::EnsEMBL::Transcript or undef
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
946 Exceptions : none
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
947 Caller : general
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
948
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
949 =cut
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
950
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
951 sub get_Transcript {
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
952 my $self = shift;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
953
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
954 return undef unless($self->source_name eq 'ENSEMBLPEP');
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
955 return $self->{'core_transcript'} if($self->{'core_transcript'});
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
956
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
957 unless($self->genome_db and
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
958 $self->genome_db->db_adaptor and
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
959 $self->genome_db->db_adaptor->isa('Bio::EnsEMBL::DBSQL::DBAdaptor'))
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
960 {
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
961 throw("unable to connect to core ensembl database: missing registry and genome_db.locator");
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
962 }
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
963 my $coreDBA = $self->genome_db->db_adaptor;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
964 $self->{'core_transcript'} = $coreDBA->get_TranscriptAdaptor->fetch_by_translation_stable_id($self->stable_id);
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
965 return $self->{'core_transcript'};
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
966 }
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
967
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
968
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
969 =head2 get_Translation
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
970
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
971 Args : none
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
972 Example : $translation = $member->get_Translation
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
973 Description: if member is an 'ENSEMBLPEP' returns Bio::EnsEMBL::Translation object
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
974 by connecting to ensembl genome core database
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
975 REQUIRES properly setup Registry conf file or
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
976 manually setting genome_db->db_adaptor for each genome.
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
977 Returntype : Bio::EnsEMBL::Gene or undef
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
978 Exceptions : none
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
979 Caller : general
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
980
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
981 =cut
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
982
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
983 sub get_Translation {
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
984 my $self = shift;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
985
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
986 if($self->get_Transcript) {
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
987 my $transcript = $self->get_Transcript;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
988 return $transcript->translation();
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
989 }
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
990 return undef;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
991 }
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
992
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
993 sub gene {
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
994 my $self = shift;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
995 deprecate('Use get_Gene() instead');
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
996 return $self->get_Gene;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
997 }
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
998 sub transcript {
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
999 my $self = shift;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1000 deprecate('Use get_Transcript() instead');
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1001 return $self->get_Transcript;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1002 }
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1003 sub translation {
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1004 my $self = shift;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1005 deprecate('Use get_Translation() instead');
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1006 return $self->get_Translation();
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1007 }
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1008
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1009
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1010 =head2 get_canonical_Member
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1011
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1012 Args : none
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1013 Example : $canonicalMember = $member->get_canonical_Member
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1014 Description: if member is an "ENSEMBLGENE" it will return the canonical peptide / transcript member
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1015 if member is an 'ENSEMBLPEP' it will get its gene member and have it
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1016 if member is an 'ENSEMBLTRANS' it will get its gene member and have it
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1017 return the canonical peptide / transcript (which could be the same as the starting member)
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1018 Returntype : Bio::EnsEMBL::Compara::Member or undef
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1019 Exceptions : none
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1020 Caller : general
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1021
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1022 =cut
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1023
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1024 sub get_canonical_Member {
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1025 my $self = shift;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1026
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1027 return unless($self->adaptor);
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1028
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1029 my $able_adaptor = UNIVERSAL::can($self->adaptor, 'fetch_canonical_member_for_gene_member_id')
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1030 ? $self->adaptor # a MemberAdaptor or derivative
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1031 : $self->adaptor->db->get_MemberAdaptor;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1032
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1033 if($self->source_name eq 'ENSEMBLGENE') {
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1034
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1035 return $able_adaptor->fetch_canonical_member_for_gene_member_id($self->dbID);
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1036
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1037 } elsif(($self->source_name eq 'ENSEMBLPEP') or ($self->source_name eq 'ENSEMBLTRANS')) {
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1038
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1039 my $geneMember = $self->gene_member or return;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1040
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1041 return $able_adaptor->fetch_canonical_member_for_gene_member_id($geneMember->dbID);
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1042
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1043 } else {
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1044
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1045 return undef;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1046 }
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1047 }
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1048
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1049
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1050 =head2 get_canonical_peptide_Member
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1051
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1052 Description: DEPRECATED. Use get_canonical_Member() instead
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1053
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1054 =cut
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1055
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1056 sub get_canonical_peptide_Member {
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1057 my $self = shift;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1058
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1059 deprecate('Use get_canonical_Member() instead');
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1060 return $self->get_canonical_Member(@_);
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1061 }
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1062
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1063
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1064 =head2 get_canonical_transcript_Member
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1065
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1066 Description: DEPRECATED. Use get_canonical_Member() instead
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1067
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1068 =cut
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1069
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1070 sub get_canonical_transcript_Member {
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1071 my $self = shift;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1072
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1073 deprecate('Use get_canonical_Member() instead');
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1074 return $self->get_canonical_Member(@_);
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1075 }
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1076
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1077
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1078 =head2 get_all_peptide_Members
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1079
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1080 Args : none
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1081 Example : $pepMembers = $gene_member->get_all_peptide_Members
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1082 Description: return listref of all peptide members of this gene_member
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1083 Returntype : array ref of Bio::EnsEMBL::Compara::Member
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1084 Exceptions : throw if not an ENSEMBLGENE
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1085 Caller : general
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1086
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1087 =cut
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1088
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1089 sub get_all_peptide_Members {
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1090 my $self = shift;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1091
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1092 throw("adaptor undefined, can access database") unless($self->adaptor);
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1093 throw("not an ENSEMBLGENE member") if($self->source_name ne 'ENSEMBLGENE');
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1094
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1095 my $able_adaptor = UNIVERSAL::can($self->adaptor, 'fetch_all_peptides_for_gene_member_id')
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1096 ? $self->adaptor # a MemberAdaptor or derivative
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1097 : $self->adaptor->db->get_MemberAdaptor;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1098
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1099
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1100 return $able_adaptor->fetch_all_peptides_for_gene_member_id($self->dbID);
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1101 }
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1102
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1103
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1104 1;