annotate variant_effect_predictor/Bio/EnsEMBL/Utils/TranscriptSNPs.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 TranscriptSNPs - A utility class used to obtain information about the
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
24 relationships between a transcript and SNPs
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::Utils::TranscriptSNPs;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
29
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
30 # get and type all snps in the region of the transcript
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
31
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
32 %snps = %{
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
33 Bio::EnsEMBL::Utils::TranscriptSNPs::get_all_SNPs( $transcript,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
34 $flanking ) };
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
35
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
36 # get all snps overlapping the transcript in cdna coordinates
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
37
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
38 %snps =
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
39 %{ Bio::EnsEMBL::Utils::TranscriptSNPs::get_all_cdna_SNPs(
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
40 $transcript) };
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
41
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
42 # get the peptide variations caused by a set of SNPs
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
43
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
44 %variations = %{
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
45 Bio::EnsEMBL::Utils::TranscriptSNPs::get_all_peptide_variations(
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
46 $transcript, $snps ) };
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
47
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
48 =head1 DESCRIPTION
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
49
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
50 This is a utility class which can be used to get snps associated with a
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
51 transcript, and to determine the amino acid changes caused by the SNPs
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
52
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
53 =head1 METHODS
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
54
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
55 =cut
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
56
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
57 package Bio::EnsEMBL::Utils::TranscriptSNPs;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
58
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
59 use strict;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
60 use warnings;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
61 no warnings 'uninitialized';
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
62
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
63
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
64
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
65 use Bio::EnsEMBL::Utils::Exception qw(throw warning);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
66
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
67
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
68 =head2 get_all_peptide_variations
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
69
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
70 Arg [1] : $transcript the transcript to obtain the peptide variations for
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
71 Arg [2] : $snps listref of coding snps in cdna coordinates
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
72 Example : $pep_hash = get_all_peptide_variations($transcript, \@snps);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
73 Description: Takes a list of coding snps on this transcript in
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
74 which are in cdna coordinates and returns a hash with peptide
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
75 coordinate keys and listrefs of alternative amino acids as
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
76 values. The SNPs must additionally have a strand of 1 for the
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
77 sake of simplicity. Normally these could be generated using the
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
78 get_all_cdna_SNPs method.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
79
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
80 Note that the peptide encoded by the reference sequence is
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
81 also present in the results and that duplicate peptides
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
82 (e.g. resulting from synonomous mutations) are discarded.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
83 It is possible to have greated than two peptides variations
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
84 at a given location given adjacent or overlapping snps.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
85 Insertion/deletion variations are ignored by this method.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
86 Example of a data structure that could be returned:
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
87 { 1 => ['I', 'M'],
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
88 10 => ['I', 'T'],
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
89 37 => ['N', 'D'],
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
90 56 => ['G', 'E'],
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
91 118 => ['R', 'K'],
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
92 159 => ['D', 'E'],
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
93 167 => ['Q', 'R'],
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
94 173 => ['H', 'Q'] }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
95 Returntype : hashref
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
96 Exceptions : none
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
97 Caller : general
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
98
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
99 =cut
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
100
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
101 sub get_all_peptide_variations {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
102 my $transcript = shift;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
103 my $snps = shift;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
104
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
105 if(!ref($transcript) || !$transcript->isa('Bio::EnsEMBL::Transcript')) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
106 throw('Bio::EnsEMBL::Transcript argument is required.');
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
107 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
108
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
109 if(!ref($snps) eq 'ARRAY') {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
110 throw('Reference to a list of Bio::EnsEMBL::SNP objects is required');
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
111 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
112
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
113 my $codon_table = Bio::Tools::CodonTable->new;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
114 my $codon_length = 3;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
115 my $cdna = $transcript->spliced_seq;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
116
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
117 my $variant_alleles;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
118 my $translation_start = $transcript->cdna_coding_start;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
119 foreach my $snp (@$snps) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
120 #skip variations not on a single base
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
121 next if ($snp->start != $snp->end);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
122
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
123 my $start = $snp->start;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
124 my $strand = $snp->strand;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
125
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
126 #calculate offset of the nucleotide from codon start (0|1|2)
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
127 my $codon_pos = ($start - $translation_start) % $codon_length;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
128
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
129 #calculate the peptide coordinate of the snp
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
130 my $peptide = ($start - $translation_start +
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
131 ($codon_length - $codon_pos)) / $codon_length;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
132
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
133 # skip this SNP if it falls in a partial codon
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
134 next if $start - $codon_pos + $codon_length > length($cdna);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
135
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
136 #retrieve the codon
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
137 my $codon = substr($cdna, $start - $codon_pos-1, $codon_length);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
138
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
139 #store each alternative allele by its location in the peptide
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
140 my @alleles = split(/\/|\|/, lc($snp->allele_string));
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
141 #my @alleles = split(/\/|\|/, lc($snp->alleles));
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
142
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
143 foreach my $allele (@alleles) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
144 next if $allele eq '-'; #skip deletions
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
145 next if CORE::length($allele) != 1; #skip insertions
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
146
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
147 #get_all_cdna_SNPs always gives strand of 1 now
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
148 #if($strand == -1) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
149 # #complement the allele if the snp is on the reverse strand
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
150 # $allele =~
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
151 # tr/acgtrymkswhbvdnxACGTRYMKSWHBVDNX/tgcayrkmswdvbhnxTGCAYRKMSWDVBHNX/;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
152 #}
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
153
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
154 #create a data structure of variant alleles sorted by both their
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
155 #peptide position and their position within the peptides codon
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
156 $variant_alleles ||= {};
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
157 if(exists $variant_alleles->{$peptide}) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
158 my $alleles_arr = $variant_alleles->{$peptide}->[1];
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
159 push @{$alleles_arr->[$codon_pos]}, $allele;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
160 } else {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
161 #create a list of 3 lists (one list for each codon position)
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
162 my $alleles_arr = [[],[],[]];
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
163 push @{$alleles_arr->[$codon_pos]}, $allele;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
164 $variant_alleles->{$peptide} = [$codon, $alleles_arr];
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
165 }
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 %out;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
170 #now generate all possible codons for each peptide and translate them
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
171 foreach my $peptide (keys %$variant_alleles) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
172 my ($codon, $alleles) = @{$variant_alleles->{$peptide}};
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
173
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
174 #need to push original nucleotides onto each position
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
175 #so that all possible combinations can be generated
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
176 push @{$alleles->[0]}, substr($codon,0,1);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
177 push @{$alleles->[1]}, substr($codon,1,1);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
178 push @{$alleles->[2]}, substr($codon,2,1);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
179
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
180 my %alt_amino_acids;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
181 foreach my $a1 (@{$alleles->[0]}) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
182 substr($codon, 0, 1) = $a1;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
183 foreach my $a2 (@{$alleles->[1]}) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
184 substr($codon, 1, 1) = $a2;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
185 foreach my $a3 (@{$alleles->[2]}) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
186 substr($codon, 2, 1) = $a3;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
187 my $aa = $codon_table->translate($codon);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
188 #print "$codon translation is $aa\n";
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
189 $alt_amino_acids{$aa} = 1;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
190 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
191 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
192 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
193
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
194 my @aas = keys %alt_amino_acids;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
195 $out{$peptide} = \@aas;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
196 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
197
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
198 return \%out;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
199 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
200
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
201
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
202
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
203 =head2 get_all_SNPs
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
204
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
205 Arg [1] : Bio::EnsEMBL::Transcript $transcript
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
206
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
207 Arg [2] : (optional) int $flanking
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
208 The number of basepairs of transcript flanking sequence to
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
209 retrieve snps from (default 0)
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
210 Arg [3] : $source type of database source (dbSNP, Glovar)
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
211 Example : $snp_hashref = get_all_transcript_SNPs($transcript)
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
212 Description: Retrieves all snps found within the region of the
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
213 provided transcript
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
214 The snps are returned in a hash with keys corresponding
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
215 to the region the snp was found in. Possible keys are:
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
216 'three prime UTR', 'five prime UTR', 'coding', 'intronic',
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
217 'three prime flanking', 'five prime flanking'
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
218 If no flanking argument is provided no flanking snps will be
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
219 obtained.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
220 The listrefs which are the values of the returned hash
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
221 contain snps in coordinates of the transcript region
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
222 (i.e. first base = first base of the first exon on the
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
223 postive strand - flanking bases + 1)
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
224
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
225 Multiple base variations and inserts/deletes are discarded
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
226 by this method and not used.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
227
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
228 Returntype : hasref with string keys and listrefs of Bio::EnsEMBL::SNPs for
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
229 values
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
230 Exceptions : none
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
231 Caller : general
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
232
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
233 =cut
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
234
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
235 sub get_all_SNPs {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
236 my $transcript = shift;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
237 my $flanking = shift || 0;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
238 my $source = shift;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
239
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
240 if(!ref($transcript) || !$transcript->isa('Bio::EnsEMBL::Transcript')) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
241 throw('Bio::EnsEMBL::Transcript argument required.');
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
242 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
243
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
244 my $slice = $transcript->slice();
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
245
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
246 if(!$slice) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
247 warning("Cannot obtain SNPs for transcript without attached Slice.");
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
248 return {};
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
249 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
250
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
251 my $sa = $slice->adaptor();
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
252
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
253 if(!$sa) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
254 warning('Cannot obtain SNPs for transcript unless attached slice ' .
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
255 'has attached adaptor');
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
256 return {};
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
257 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
258
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
259 my %snp_hash;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
260
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
261 # retrieve slice in the region of the transcript
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
262 $slice = $sa->fetch_by_Feature($transcript, $flanking );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
263
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
264 # copy transcript, to work in coord system we are interested in
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
265 $transcript = $transcript->transfer( $slice );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
266
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
267 # get all snps in the transcript region
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
268 my $snps;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
269 if ($source eq 'glovar') {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
270 $snps = $slice->get_all_ExternalFeatures('GlovarSNP');
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
271 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
272 elsif ($source eq 'variation') {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
273 $snps = $slice->get_all_VariationFeatures;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
274 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
275 else {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
276 $snps = $slice->get_all_SNPs; # dont need once use new snp api (i think)
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
277 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
278
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
279 my $trans_start = $flanking + 1;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
280 my $trans_end = $slice->length - $flanking;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
281 my $trans_strand = $transcript->get_all_Exons->[0]->strand;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
282
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
283 # classify each snp
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
284 foreach my $snp (@$snps) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
285 my $key;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
286
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
287 if(($trans_strand == 1 && $snp->end < $trans_start) ||
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
288 ($trans_strand == -1 && $snp->start > $trans_end)) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
289 # this snp is upstream from the transcript
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
290 $key = 'five prime flanking';
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
291 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
292
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
293 elsif(($trans_strand == 1 && $snp->start > $trans_end) ||
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
294 ($trans_strand == -1 && $snp->start < $trans_start)) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
295 # this snp is downstream from the transcript
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
296 $key = 'three prime flanking';
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
297 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
298
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
299 else {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
300 #snp is inside transcript region check if it overlaps an exon
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
301 foreach my $e (@{$transcript->get_all_Exons}) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
302 if($snp->end >= $e->start && $snp->start <= $e->end) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
303 # this snp is in an exon
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
304
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
305 if(($trans_strand == 1 &&
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
306 $snp->end < $transcript->coding_region_start) ||
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
307 ($trans_strand == -1 &&
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
308 $snp->start > $transcript->coding_region_end)) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
309 # this snp is in the 5' UTR
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
310 $key = 'five prime UTR';
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
311 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
312
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
313 elsif(($trans_strand == 1 &&
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
314 $snp->start > $transcript->coding_region_end)||
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
315 ($trans_strand == -1 &&
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
316 $snp->end < $transcript->coding_region_start)) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
317 # this snp is in the 3' UTR
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
318 $key = 'three prime UTR';
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
319 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
320
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
321 else {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
322 # snp is coding
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
323 $key = 'coding';
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
324 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
325 last;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
326 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
327 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
328 unless($key) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
329 # snp was not in an exon and is therefore intronic
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
330 $key = 'intronic';
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
331 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
332 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
333
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
334 unless($key) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
335 #warning('SNP could not be mapped. In/Dels not supported yet...');
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
336 next;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
337 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
338
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
339 if(exists $snp_hash{$key}) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
340 push @{$snp_hash{$key}}, $snp;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
341 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
342 else {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
343 $snp_hash{$key} = [$snp];
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
344 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
345 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
346
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
347 return \%snp_hash;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
348 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
349
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
350
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
351
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
352 =head2 get_all_cdna_SNPs
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
353
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
354 Arg [1] : Bio::EnsEMBL::Transcript $transcript
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
355 Arg [2] : $source type of database source (dbSNP, Glovar)
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
356 Example : $cdna_snp_hasref = $transcript->get_all_cdna_SNPs;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
357 Description: Retrieves all snps found within exons of the provided
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
358 transcript.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
359 The snps are returned in a hash with three keys corresponding
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
360 to the region the snp was found in. Valid keys are:
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
361 'three prime UTR', 'five prime UTR', 'coding'
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
362 The listrefs which are the values of the returned hash
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
363 contain snps in CDNA coordinates.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
364
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
365 Multiple base variations and insertions/deletions are not
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
366 used by this function and are discarded.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
367 Returntype : hasref with string keys and listrefs of Bio::EnsEMBL::SNPs for
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
368 values
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
369 Exceptions : none
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
370 Caller : general
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
371
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
372 =cut
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
373
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
374 sub get_all_cdna_SNPs {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
375 my ($transcript, $source) = @_;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
376
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
377 #retrieve all of the snps from this transcript
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
378 my $all_snps = get_all_SNPs($transcript, 0, $source);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
379 my %snp_hash;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
380
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
381 my @cdna_types = ('three prime UTR', 'five prime UTR','coding');
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
382
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
383 my $slice = $transcript->slice();
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
384 my $sa = $slice->adaptor();
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
385
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
386 $slice = $sa->fetch_by_Feature($transcript);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
387
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
388 # copy transcript in order to work in coord system of interest
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
389 $transcript = $transcript->transfer($slice);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
390
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
391 foreach my $type (@cdna_types) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
392 $snp_hash{$type} = [];
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
393 foreach my $snp (@{$all_snps->{$type}}) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
394 my @coords = $transcript->genomic2cdna($snp->start, $snp->end,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
395 $snp->strand);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
396
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
397 #skip snps that don't map cleanly (possibly an indel...)
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
398 if(scalar(@coords) != 1) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
399 #warning("snp of type $type does not map cleanly\n");
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
400 next;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
401 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
402
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
403 my ($coord) = @coords;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
404
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
405 unless($coord->isa('Bio::EnsEMBL::Mapper::Coordinate')) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
406 #warning("snp of type $type maps to gap\n");
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
407 next;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
408 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
409
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
410 my $alleles;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
411 my $ambicode;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
412
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
413 # get alleles and ambig_code (with fallback to old snp API)
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
414 $alleles = $snp->allele_string || $snp->{'alleles'};
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
415 $ambicode = $snp->ambig_code || $snp->{'_ambiguity_code'};
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
416
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
417 #we arbitrarily put the SNP on the +ve strand because it is easier to
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
418 #work with in the webcode
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
419 if($coord->strand == -1) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
420 $alleles =~
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
421 tr/acgthvmrdbkynwsACGTDBKYHVMRNWS\//tgcadbkyhvmrnwsTGCAHVMRDBKYNWS\//;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
422 $ambicode =~
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
423 tr/acgthvmrdbkynwsACGTDBKYHVMRNWS\//tgcadbkyhvmrnwsTGCAHVMRDBKYNWS\//;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
424 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
425 #copy the snp and convert to cdna coords...
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
426 my $new_snp;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
427 %$new_snp = %$snp;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
428 bless $new_snp, ref $snp;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
429 $new_snp->start($coord->start);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
430 $new_snp->end($coord->end);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
431 $new_snp->strand(1);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
432 $new_snp->allele_string($alleles);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
433 $new_snp->ambig_code($ambicode);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
434 push @{$snp_hash{$type}}, $new_snp;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
435 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
436 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
437
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
438 return \%snp_hash;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
439 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
440
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
441
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
442
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
443
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
444 1;