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

Merge heads 2:a5976b2dce6f and 1:09613ce8151e which were created as a result of a recently fixed bug.
author devteam <devteam@galaxyproject.org>
date Mon, 13 Jan 2014 10:38:30 -0500
parents 1f6dce3d34e0
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
0
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1 =head1 LICENSE
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
3 Copyright (c) 1999-2012 The European Bioinformatics Institute and
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
4 Genome Research Limited. All rights reserved.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
5
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
6 This software is distributed under a modified Apache license.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
7 For license details, please see
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
8
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
9 http://www.ensembl.org/info/about/code_licence.html
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
10
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
11 =head1 CONTACT
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
12
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
13 Please email comments or questions to the public Ensembl
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
14 developers list at <dev@ensembl.org>.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
15
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
16 Questions may also be sent to the Ensembl help desk at
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
17 <helpdesk@ensembl.org>.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
18
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
19 =cut
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
20
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
21 =head1 NAME
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
22
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
23 Bio::EnsEMBL::TranscriptFactory - Module having the fset2transcript*
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
24 subroutines
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
25
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
26 =head1 SYNOPSIS
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
27
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
28 use Bio::EnsEMBL::TranscriptFactory;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
29
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
30 &Bio::EnsEMBL::TranscriptFactory::fset2transcript($fset_id);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
31
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
32 =head1 DESCRIPTION
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
33
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
34 Module containing the subroutines fset2transcript*,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
35 which create transcripts from features (formally housed in
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
36 Bio::EnsEMBL::DBSQL::Utils).
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
37
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
38 =head1 METHODS
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
39
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
40 =cut
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
41
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
42 package Bio::EnsEMBL::TranscriptFactory;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
43
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
44 use strict;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
45
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
46 use Bio::EnsEMBL::Exon;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
47 use Bio::EnsEMBL::Translation;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
48 use Bio::EnsEMBL::Transcript;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
49
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
50 sub fset2transcript {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
51 my ($genscan,$contig)=@_;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
52
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
53
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
54 unless ($genscan->isa ("Bio::EnsEMBL::SeqFeatureI"))
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
55 {print "$genscan must be Bio::EnsEMBL::SeqFeatureI\n";}
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
56
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
57 my $transcript = new Bio::EnsEMBL::Transcript;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
58 $transcript->temporary_id($contig->id . "." . $genscan->seqname);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
59
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
60 my @exons;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
61 my $count= 1;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
62
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
63 foreach my $f ($genscan->sub_SeqFeature) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
64
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
65 my $exon = new Bio::EnsEMBL::Exon;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
66 $transcript->add_Exon($exon);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
67 $exon->contig ($contig);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
68 $exon->start ($f->start);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
69 $exon->end ($f->end );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
70 $exon->strand ($f->strand);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
71 $exon->phase ($f->phase);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
72 $exon->end_phase( ($exon->phase + $exon->length)%3 );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
73 #$exon->score($f->score);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
74 # $exon->p_value($f->p_value);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
75 $exon->slice($contig->primary_seq);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
76
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
77 push(@exons,$exon);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
78 $count++;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
79
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
80 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
81
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
82 if( $count == 1 ) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
83 $genscan->throw("Got a 0 exon genscan");
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
84 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
85
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
86 my $translation = new Bio::EnsEMBL::Translation;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
87 #
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
88 # This code got changed due to Translation convention changing. Should work...
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
89 #
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
90
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
91 if ($exons[0]->strand == 1) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
92 @exons = sort {$a->start <=> $b->start} @exons;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
93 } else {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
94 @exons = sort {$b->start <=> $a->start} @exons;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
95 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
96
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
97 $translation->start(1);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
98 $translation->end($exons[scalar(@exons)-1]->length);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
99
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
100 $translation->start_Exon($exons[0]);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
101 $translation->end_Exon($exons[$#exons]);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
102
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
103 my $endphase = $exons[0]->end_phase;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
104
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
105 foreach my $exon (@exons) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
106
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
107 if ( $exon == $exons[0] ){
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
108 next;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
109 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
110 $exon->phase ($endphase);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
111 $endphase = $exon->end_phase;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
112 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
113
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
114 $transcript->translation($translation);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
115
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
116 return $transcript;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
117 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
118
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
119 sub fset2transcript_guess_phases {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
120 my ($fset,$contig) = @_;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
121
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
122 my $transcript = new Bio::EnsEMBL::Transcript;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
123
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
124 $transcript->temporary_id($contig->id . "." . $fset->id);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
125
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
126
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
127 my @exons;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
128 my $count = 1;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
129
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
130 foreach my $f ($fset->sub_SeqFeature) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
131
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
132 my $exon = new Bio::EnsEMBL::Exon;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
133 $exon->contig ($contig);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
134 $exon->start ($f->start);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
135 $exon->end ($f->end );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
136 $exon->strand ($f->strand);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
137 #$exon->score($f->score);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
138 # $exon->p_value($f->p_value);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
139 $exon->slice($contig);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
140 $exon->phase($f->phase);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
141 push(@exons,$exon);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
142 $count++;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
143
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
144 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
145
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
146 my $translation = new Bio::EnsEMBL::Translation;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
147
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
148 if ($exons[0]->strand == 1) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
149 @exons = sort {$a->start <=> $b->start} @exons;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
150 } else {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
151 @exons = sort {$b->start <=> $a->start} @exons;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
152 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
153
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
154 $translation->start (1);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
155 $translation->end ($exons[$#exons]->end - $exons[$#exons]->start + 1);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
156 $translation->start_Exon($exons[0]);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
157 $translation->end_Exon($exons[$#exons]);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
158 $transcript->translation($translation);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
159
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
160 my $endphase = 0;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
161
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
162 foreach my $exon (@exons) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
163
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
164 $exon ->phase ($endphase);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
165 $transcript->add_Exon($exon);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
166
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
167 $endphase = $exon->end_phase(($exon->phase + $exon->length)%3);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
168
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
169 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
170
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
171
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
172 if ($transcript->translate->seq !~ /\*/) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
173 return $transcript;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
174 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
175
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
176 $endphase = 1;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
177
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
178 foreach my $exon (@exons) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
179 $exon->phase($endphase);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
180 $endphase = $exon->end_phase(($exon->phase + $exon->length)%3);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
181 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
182
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
183 if ($transcript->translate->seq !~ /\*/) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
184 return $transcript;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
185 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
186
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
187 $endphase = 2;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
188
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
189 foreach my $exon (@exons) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
190 $exon->phase($endphase);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
191 $endphase = $exon->end_phase(($exon->phase + $exon->length)%3);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
192 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
193
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
194 if ($transcript->translate->seq !~ /\*/) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
195 return $transcript;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
196 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
197 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
198
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
199 sub fset2transcript_3frame {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
200 my ($fset,$contig) = @_;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
201
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
202 my @f = $fset->sub_SeqFeature;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
203
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
204 if ($f[0]->strand == 1) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
205 @f = sort {$a->start <=> $b->start} @f;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
206 } else {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
207 @f = sort {$b->start <=> $a->start} @f;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
208 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
209
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
210 my @transcripts;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
211
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
212 my $startphase = 0;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
213
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
214 while ($startphase < 3) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
215 my $endphase = $startphase;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
216
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
217 my $transcript = new Bio::EnsEMBL::Transcript;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
218
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
219 push(@transcripts,$transcript);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
220
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
221 $transcript->temporary_id($contig->id . "." . $endphase);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
222
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
223 my $count = 1;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
224 my @exons;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
225
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
226
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
227 foreach my $f (@f) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
228 #print "exon seqname = ".$f->seqname."\n";
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
229 my $exon = new Bio::EnsEMBL::Exon;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
230 #print STDERR "exon ".$f->gffstring."\n";
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
231 push(@exons,$exon);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
232 $exon->seqname($f->seqname);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
233 $exon->temporary_id ($contig->id . ".$count");
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
234 $exon->contig ($contig);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
235 $exon->start ($f->start);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
236 $exon->end ($f->end );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
237 $exon->strand ($f->strand);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
238 $exon->slice($contig);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
239 $exon->phase ($endphase);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
240 $exon->end_phase( ($exon->phase + $exon->length)%3 );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
241 #$exon->score ($f->score);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
242 # $exon->p_value ($f->p_value);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
243 $endphase = $exon->end_phase;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
244
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
245 $transcript->add_Exon($exon);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
246 $count++;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
247
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
248 #print STDERR "Added exon start " . $exon->start . " end " . $exon->end . " strand " . $exon->strand . " score " . $exon->score . " pvalue " . $exon->p_value . "\n";
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
249 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
250
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
251 my $translation = new Bio::EnsEMBL::Translation;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
252
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
253 my $contig_id = "";
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
254 my $fset_id = "";
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
255
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
256 if (defined($contig->id)) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
257 $contig_id = $contig->id;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
258 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
259 if (defined($fset->id)) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
260 $fset_id = $fset->id;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
261 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
262
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
263 $translation->temporary_id($contig_id . "." . $fset_id);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
264 $translation->start (1);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
265 $translation->end ($exons[$#exons]->end - $exons[$#exons]->start + 1);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
266 $translation->start_Exon($exons[0]);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
267 $translation->end_Exon ($exons[$#exons]);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
268 $transcript->translation($translation);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
269
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
270 # print STDERR "Phase $startphase " . $transcript->translate->seq . "\n";
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
271
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
272 $startphase++;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
273 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
274 #print "finshed fset2transcript_3frame\n";
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
275 return @transcripts;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
276 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
277
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
278
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
279 sub fset2transcript_with_seq {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
280 my ($genscan,$seq)=@_;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
281
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
282
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
283 unless ($genscan->isa ("Bio::EnsEMBL::SeqFeatureI"))
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
284 {print "$genscan must be Bio::EnsEMBL::SeqFeatureI\n";}
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
285 unless ($seq->isa ("Bio::PrimarySeqI") || $seq->isa ("Bio::SeqI"))
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
286 {print "$seq must be Bio::SeqI or a Bio::PrimarySeqI\n";}
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
287
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
288 #print STDERR "running fset2transcript\n";
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
289 my $transcript = new Bio::EnsEMBL::Transcript;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
290 $transcript->temporary_id($seq->id . "." . $genscan->seqname);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
291
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
292 my @exons;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
293 my $count= 1;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
294
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
295 foreach my $f ($genscan->sub_SeqFeature) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
296
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
297 my $exon = new Bio::EnsEMBL::Exon;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
298 $exon->contig ($seq);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
299 $exon->start ($f->start);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
300 $exon->end ($f->end );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
301 $exon->strand ($f->strand);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
302 $exon->phase ($f->phase);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
303 $exon->end_phase( ($exon->phase + $exon->length)%3 );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
304 #$exon->score ($f->score);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
305 #print STDERR "contig is a = ".$seq."\n";
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
306 $exon->slice($seq);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
307
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
308 push(@exons,$exon);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
309 $count++;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
310
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
311 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
312
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
313 foreach my $exon (@exons) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
314
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
315 $transcript->add_Exon($exon);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
316
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
317
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
318 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
319 return $transcript;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
320
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
321 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
322
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
323
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
324
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
325 1;