annotate variant_effect_predictor/Bio/EnsEMBL/LRGSlice.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::LRGSlice - Arbitary Slice of a genome
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
24
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
25 =head1 SYNOPSIS
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
26
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
27 $sa = $db->get_SliceAdaptor;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
28
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
29 $slice =
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
30 $sa->fetch_by_region( 'LRG', 'LRG3');
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
31
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
32 # get some attributes of the slice
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
33 my $seqname = $slice->seq_region_name();
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
34 my $start = $slice->start();
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
35 my $end = $slice->end();
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
36
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
37 # get the sequence from the slice
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
38 my $seq = $slice->seq();
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
39
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
40 # get some features from the slice
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
41 foreach $gene ( @{ $slice->get_all_Genes } ) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
42 # do something with a gene
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
43 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
44
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
45 foreach my $feature ( @{ $slice->get_all_DnaAlignFeatures } ) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
46 # do something with dna-dna alignments
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
47 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
48
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
49 =head1 DESCRIPTION
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
50
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
51 A LRG Slice object represents a region of a genome. It can be used to retrieve
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
52 sequence or features from an area of interest.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
53
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
54 =head1 METHODS
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
55
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
56 =cut
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
57
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
58 package Bio::EnsEMBL::LRGSlice;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
59 use vars qw(@ISA);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
60 use strict;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
61
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
62 use Bio::PrimarySeqI;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
63
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
64 use Bio::EnsEMBL::Slice;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
65
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
66 use vars qw(@ISA);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
67
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
68 @ISA = qw(Bio::EnsEMBL::Slice);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
69
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
70 sub new{
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
71 my $class = shift;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
72
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
73 my $self = bless {}, $class ;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
74
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
75 my $slice = $self = $class->SUPER::new( @_);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
76
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
77 return $self;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
78 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
79
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
80 sub stable_id {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
81 my $self = shift;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
82 return $self->seq_region_name;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
83 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
84
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
85
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
86 sub display_xref {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
87 my $self = shift;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
88 return $self->seq_region_name;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
89 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
90
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
91 sub feature_Slice {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
92 my $self = shift;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
93 return $self->{_chrom_slice} if defined($self->{_chrom_slice});
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
94
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
95 my $max=-99999999999;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
96 my $min=9999999999;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
97 my $chrom;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
98 my $strand;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
99
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
100 # print STDERR "working out feature slcie\n";
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
101 foreach my $segment (@{$self->project('chromosome')}) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
102 my $from_start = $segment->from_start();
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
103 my $from_end = $segment->from_end();
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
104 my $to_name = $segment->to_Slice->seq_region_name();
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
105 $chrom = $to_name;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
106
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
107 my $to_start = $segment->to_Slice->start();
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
108 my $to_end = $segment->to_Slice->end();
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
109 if($to_start > $max){
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
110 $max = $to_start;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
111 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
112 if($to_start < $min){
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
113 $min = $to_start;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
114 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
115 if($to_end > $max){
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
116 $max = $to_end;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
117 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
118 if($to_end < $min){
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
119 $min = $to_end;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
120 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
121 my $ori = $segment->to_Slice->strand();
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
122 $strand = $ori;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
123 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
124 if(!defined($chrom)){
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
125 warn "Could not project to chromosome for ".$self->name."??\n";
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
126 return undef;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
127 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
128 my $chrom_slice = $self->adaptor->fetch_by_region("chromosome",$chrom, $min, $max, $strand);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
129 $self->{_chrom_slice} = $chrom_slice;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
130 return $self->{_chrom_slice};
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
131 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
132
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
133 sub DESTROY{
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
134 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
135
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
136 sub get_all_differences{
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
137 my $self = shift;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
138
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
139 my @results;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
140
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
141 # get seq_region_attrib diffs (always same-length substitutions)
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
142 ################################################################
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
143
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
144 my $sth = $self->adaptor->prepare(qq{
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
145 SELECT sra.value
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
146 FROM seq_region_attrib sra, attrib_type at
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
147 WHERE at.code = '_rna_edit'
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
148 AND at.attrib_type_id = sra.attrib_type_id
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
149 AND sra.seq_region_id = ?
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
150 });
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
151
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
152 $sth->execute($self->get_seq_region_id);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
153
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
154 my $edit_string;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
155
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
156 $sth->bind_columns(\$edit_string);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
157
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
158 while($sth->fetch()) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
159 my ($start, $end, $edit) = split " ", $edit_string;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
160
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
161 my $slice = $self->sub_Slice($start, $end);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
162 my $chr_proj = $slice->project("chromosome");
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
163 my $ref_seq = '-';
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
164 if(scalar @$chr_proj == 1) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
165 $ref_seq = $chr_proj->[0]->[2]->seq;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
166 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
167
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
168
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
169 my $diff = {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
170 'start' => $start,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
171 'end' => $end,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
172 'type' => 'substitution',
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
173 'seq' => $edit,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
174 'ref' => $ref_seq,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
175 };
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
176
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
177 push @results, $diff;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
178 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
179
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
180 # get more complex differences via projections
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
181 ##############################################
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
182
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
183 # project the LRG slice to contig coordinates
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
184 my @segs = @{$self->project("contig")};
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
185
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
186 # if the LRG projects into more than one segment
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
187 if(scalar @segs > 1) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
188
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
189 my ($prev_end, $prev_chr_start, $prev_chr_end, $prev_was_chr);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
190
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
191 foreach my $seg(@segs) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
192
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
193 # is this a novel LRG contig, or does it project to a chromosome?
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
194 my @chr_proj = @{$seg->[2]->project("chromosome")};
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
195
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
196 # if it is a normal contig
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
197 if(scalar @chr_proj) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
198
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
199 # check if there has been a deletion in LRG
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
200 if($prev_was_chr && $prev_end == $seg->[0] - 1) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
201
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
202 # check it's not just a break in contigs
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
203 unless(
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
204 ($chr_proj[0]->[2]->strand != $self->strand && $prev_chr_start == $chr_proj[0]->[2]->end + 1) ||
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
205 ($chr_proj[0]->[2]->strand != $self->strand && $prev_chr_end == $chr_proj[0]->[2]->start - 1)
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
206 ) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
207
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
208 # now get deleted slice coords, depends on the strand rel to LRG
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
209 my ($s, $e);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
210
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
211 # opposite strand
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
212 if($chr_proj[0]->[2]->strand != $self->strand) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
213 ($s, $e) = ($prev_chr_start - 1, $chr_proj[0]->[2]->end + 1);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
214 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
215
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
216 # same strand
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
217 else {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
218 ($s, $e) = ($prev_chr_end + 1, $chr_proj[0]->[2]->start - 1);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
219 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
220
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
221 if($s > $e) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
222 warn "Oops, trying to create a slice from $s to $e (could have been ", $prev_chr_start - 1, "-", $chr_proj[0]->[2]->end + 1, " or ", $prev_chr_end + 1, "-", $chr_proj[0]->[2]->start - 1, ")";
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
223 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
224
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
225 else {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
226 # get a slice representing the sequence that was deleted
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
227 my $deleted_slice = $self->adaptor->fetch_by_region("chromosome", $chr_proj[0]->[2]->seq_region_name, $s, $e);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
228
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
229 my $diff = {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
230 'start' => $seg->[0],
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
231 'end' => $prev_end,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
232 'type' => 'deletion',
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
233 'seq' => '-',
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
234 'ref' => $deleted_slice->seq." ".$deleted_slice->start.'-'.$deleted_slice->end,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
235 };
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
236
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
237 push @results, $diff;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
238 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
239 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
240 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
241
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
242 $prev_was_chr = 1;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
243
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
244 $prev_chr_start = $chr_proj[0]->[2]->start;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
245 $prev_chr_end = $chr_proj[0]->[2]->end;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
246 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
247
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
248 # if it is an LRG made-up contig for an insertion
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
249 else {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
250 $prev_was_chr = 0;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
251
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
252 my $diff = {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
253 'start' => $seg->[0],
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
254 'end' => $seg->[1],
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
255 'type' => 'insertion',
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
256 'seq' => substr($self->seq, $seg->[0] - 1, $seg->[1] - $seg->[0] + 1),
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
257 'ref' => '-',
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
258 };
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
259
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
260 push @results, $diff;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
261 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
262
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
263 $prev_end = $seg->[1];
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
264 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
265 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
266
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
267 # return results sorted by start, then end position
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
268 return [sort {$a->{start} <=> $b->{start} || $a->{end} <=> $b->{end}} @results];
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
269 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
270
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
271 1;