annotate variant_effect_predictor/Bio/EnsEMBL/Funcgen/Parsers/miranda.pm @ 0:1f6dce3d34e0

Uploaded
author mahtabm
date Thu, 11 Apr 2013 02:01:53 -0400
parents
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 <ensembl-dev@ebi.ac.uk>.
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 package Bio::EnsEMBL::Funcgen::Parsers::miranda;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
22
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
23 use strict;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
24
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
25 use Bio::EnsEMBL::Funcgen::Parsers::BaseExternalParser;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
26 use Bio::EnsEMBL::DBEntry;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
27 use Bio::EnsEMBL::Funcgen::ExternalFeature;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
28
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
29 use vars qw(@ISA);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
30 @ISA = qw(Bio::EnsEMBL::Funcgen::Parsers::BaseExternalParser);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
31
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
32
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
33
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
34 sub new {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
35 my $caller = shift;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
36 my $class = ref($caller) || $caller;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
37
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
38 my $self = $class->SUPER::new(@_, type => 'miRanda');
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
39
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
40 #Set default feature_type and feature_set config
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
41 $self->{static_config}{feature_types} =
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
42 {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
43 'miRanda Target' => {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
44 -name => 'miRanda Target',
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
45 -class => 'RNA',
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
46 -description => 'miRanda microRNA target',
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
47 },
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
48 };
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
49
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
50 $self->{static_config}{analyses} =
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
51 {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
52 miRanda => {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
53 -logic_name => 'miRanda',
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
54 -description => '<a href="http://www.ebi.ac.uk/enright-srv/microcosm/htdocs/targets/v5/consset.html">miRanda microRNA target predictions</a>',
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
55 -display_label => 'miRanda Targets',
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
56 -displayable => 1,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
57 },
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
58 };
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
59
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
60 $self->{static_config}{feature_sets}{'miRanda miRNA targets'} =
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
61 {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
62 #analyses => $self->{static_config}{analyses},
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
63 #feature_types => $self->{static_config}{feature_types},
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
64 feature_set =>
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
65 {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
66 -feature_type => 'miRanda Target',
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
67 -display_name => 'miRanda Targets',
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
68 -description => $self->{static_config}{analyses}{miRanda}{-description},
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
69 -analysis => 'miRanda',
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
70 },
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
71 xrefs => 1,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
72 };
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
73
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
74
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
75
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
76
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
77 #$self->validate_and_store_feature_types;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
78 $self->validate_and_store_config([keys %{$self->{static_config}{feature_sets}}]);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
79 $self->set_feature_sets;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
80
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
81 return $self;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
82 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
83
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
84
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
85 #TO DO
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
86 # In loop logging should only be enable with verbose or change to debug?
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
87 # Use count methods?
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
88 # Sort input to enable cache clearing(caches max out at ~200MB so not essential)
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
89 # Optimise slice cache testing(load only takes 8 min sso not essential)
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
90 # Add verbose logging/debug to show reassigned xrefs?
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
91
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
92 sub parse_and_load{
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
93 my ($self, $files, $old_assembly, $new_assembly) = @_;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
94
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
95 #Add num files to config and check this in BaseImporter(generically)
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
96 if(scalar(@$files) != 1){
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
97 throw('You must currently define a single file to load miRanda features from:\t'.join(' ', @$files));
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
98 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
99
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
100 my $file = $files->[0];
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
101 $self->log_header("Parsing miRanda data from:\t$file");
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
102
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
103 my $analysis_adaptor = $self->db->get_AnalysisAdaptor();
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
104 my $ftype_adaptor = $self->db->get_FeatureTypeAdaptor();
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
105 my $extf_adaptor = $self->db->get_ExternalFeatureAdaptor;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
106 my $trans_adaptor = $self->db->dnadb->get_TranscriptAdaptor;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
107 my $dbentry_adaptor = $self->db->get_DBEntryAdaptor;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
108 my $set = $self->{static_config}{feature_sets}{'miRanda miRNA targets'}{feature_set};
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
109
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
110 my ($dbentry, $schema_build, %features_by_name, %slice_cache, $ens_display_name, %feature_cache);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
111 my (@txs, @sid_dnames, %xref_cache, %seen_mifeat_trans, %skipped_features, %failed_reassignment);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
112 my ($overlaps_3_utr);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
113 # this object is only used for projection
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
114 my $dummy_analysis = new Bio::EnsEMBL::Analysis(-logic_name => 'miRandaProjection');
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
115
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
116 #Some hairy counting to make sure the XREF reassignment
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
117 #is doing something sensible
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
118 #Can probably change all this to use the count methods
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
119 my $slice_skipped = 0;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
120 my $old_mid_skipped = 0;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
121 my $cnt = 0;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
122 my $proj_skipped = 0;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
123 my $seq_skipped = 0;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
124 my $row_cnt = 0;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
125 my $new_xrefs = 0;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
126 my $old_as_new_xrefs = 0;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
127 my $failed_new_sids = 0;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
128 my $utr_failed_old_sids = 0;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
129 my $no_proj_failed_old_sids = 0;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
130 my $previously_skipped = 0;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
131 my $with_overlapping_tx = 0;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
132 my $retired_sids = 0;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
133 my $existing_sids = 0;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
134 my $total_xrefs = 0;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
135 my $species = $self->db->species;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
136 my $analysis = $set->analysis;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
137
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
138
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
139 #Need to allow this to be passed
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
140 $schema_build ||= $self->db->_get_schema_build($self->db->dnadb);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
141
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
142 if(! $species){
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
143 throw('Must define a species to define the external_db');
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
144 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
145 #Just to make sure we hav homo_sapiens and not Homo Sapiens
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
146 ($species = lc($species)) =~ s/ /_/;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
147
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
148 my $edb_name = $species.'_core_Transcript',
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
149
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
150
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
151
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
152 open (FILE, "<$file") || die "Can't open $file";
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
153
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
154 #We used to have redundant target features wrt xrefs
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
155 #Similarity mmu-miR-192 miRanda miRNA_target 5 127885168 127885188 - . 15.2253 4.048320e-03 ENSMUST00000031367 Slc15a4
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
156 #Similarity mmu-miR-192 miRanda miRNA_target 5 127885168 127885188 - . 15.2397 3.945600e-03 ENSMUST00000075376 Slc15a4
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
157
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
158 #Have now changed this to nr features with multiple xrefs
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
159 #Hence have had to remove transcript sid from diplay_label
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
160
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
161 #Several 'seen' caches have be implemented to prevent redundant storing
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
162 #Currently these span the whole data set, but could be cleaned after every feature
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
163 #if the input is sorted correctly
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
164
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
165 #Need to make sure we are counting correctly
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
166 #skipped counts will reflect lines in input, not nr features
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
167
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
168
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
169 #Could add UnmappedObjects in here
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
170
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
171 LINE: while (<FILE>) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
172 next LINE if ($_ =~ /^\s*\#/o || $_ =~ /^\s*$/o);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
173 $row_cnt ++;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
174 #Added next for old miRbase IDs.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
175
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
176 #Sanger
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
177 ##GROUP SEQ METHOD FEATURE CHR START END STRAND PHASE SCORE PVALUE_OG TRANSCRIPT_ID EXTERNAL_NAME
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
178 #Similarity mmu-miR-707 miRanda miRNA_target 2 120824620 120824640 + . 15.3548 2.796540e-02 ENST00000295228 INHBB
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
179
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
180
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
181 my ($group, $id, $method, $feature, $chr, $start, $end, $strand, undef, undef, undef, $ens_id, $display_name) = split;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
182 #We never use $diplay_name now, as it never match the transcript display name
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
183 #which as the transcript number suffic attached to the gene display name
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
184 #e.g. BRCA2-001
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
185
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
186 #%seen_mifeat_trans handles redundancy between existant(i.e. not retired) sids in input
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
187 #file and those identified when trying to reannotated a retired sid
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
188
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
189 #ALREADY ANNOTATED OR SKIPPED
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
190 if(exists $seen_mifeat_trans{$id.':'.$chr.':'.$start.':'.$end}{$ens_id} ){
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
191 $self->log("Skipping previously reannotated miRNA target:\t".$id.':'.$chr.':'.$start.':'.$end.' - '.$ens_id);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
192 $old_as_new_xrefs ++;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
193 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
194 elsif(exists $skipped_features{$id.':'.$chr.':'.$start.':'.$end}){
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
195 $self->log("Skipping previous failed feature:\t".$id.':'.$chr.':'.$start.':'.$end."\t".
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
196 $skipped_features{$id.':'.$chr.':'.$start.':'.$end});
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
197 $previously_skipped++;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
198 #Could increment count in here to count old xrefs failed for each fail type
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
199 next;
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 #Added next for old miRbase IDs.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
204 if ( $id =~ /\*$/o ){
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
205 $self->log("Skipping old miRbase ID:\t$id");
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
206
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
207 $skipped_features{$id.':'.$chr.':'.$start.':'.$end} = 'Old invalid miRbase ID';
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
208 $old_mid_skipped ++;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
209
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
210 #$old_xrefs_skipped ++;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
211 #Just want to make sure we have comparable
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
212 #old skipped xrefs and re-annotated xrefs
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
213 #so this is not useful here
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
214
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
215
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
216 next LINE;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
217 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
218
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
219 $strand = ($strand =~ /\+/o) ? 1 : -1;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
220
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
221 #Now moved transript xref info exclusively to xrefs
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
222 ##my $id = $ens_id =~ s/[\"\']//g; # strip quotes
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
223 #my $id = $ens_id.':'.$seq;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
224
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
225
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
226 #change this to only test once
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
227 #if exists and not defined then skip
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
228
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
229 if(! defined $slice_cache{$chr}){
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
230
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
231 #Was originally limiting to chromosome
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
232
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
233 if($old_assembly){
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
234 $slice_cache{$chr} = $self->slice_adaptor->fetch_by_region(undef,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
235 $chr,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
236 undef,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
237 undef,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
238 undef,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
239 $old_assembly);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
240 }else{
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
241 $slice_cache{$chr} = $self->slice_adaptor->fetch_by_region(undef, $chr);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
242 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
243
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
244 if(! defined $slice_cache{$chr}){
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
245 warn "Can't get slice $chr for sequence $id\n";
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
246
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
247 $slice_skipped ++;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
248 $skipped_features{$id.':'.$chr.':'.$start.':'.$end} = "Failed to fetch slice $chr";
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
249
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
250 #Add UnmappedObject here?
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
251 next LINE;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
252 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
253 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
254
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
255
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
256 #We can add coding xref to feature type based on the miRbase name
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
257 #.e.g hsa-mir-24-1
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
258 #However, this isn't stored as an xref
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
259 #It is stored in the gene.description
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
260 #e.g. hsa-mir-24-1 [Source:miRBase;Acc:MI0000080]
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
261 #Not easy to fetch as descriptions not indexed!
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
262 #
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
263
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
264 #Cache/store FeatureType
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
265
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
266 if(! exists $features_by_name{$id}){
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
267 $features_by_name{$id} = $ftype_adaptor->fetch_by_name($id);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
268
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
269 if(! defined $features_by_name{$id}){
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
270 ($features_by_name{$id}) = @{$ftype_adaptor->store(Bio::EnsEMBL::Funcgen::FeatureType->new
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
271 (
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
272 -name => $id,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
273 -class => 'RNA',
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
274 -description => $method.' '.$feature,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
275 ))};
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
276
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
277 #Need to add source gene xref here to enable target conequences implied by source variation
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
278
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
279 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
280 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
281
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
282
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
283 #Make sure we have the target transcript before we store the feature
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
284 #Have to do this as we can't always run with the correct core DB
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
285 #as it may be too old. Hence we have to hard code the edb.release
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
286
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
287
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
288 ##This should enever happen, as the search regions are defined by ens transcript
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
289 ##i.e there is always a ensembl iD
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
290
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
291 if (! $ens_id) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
292 warn("No xref available for miRNA $id\n");
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
293 $skipped_xref++;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
294 next;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
295 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
296
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
297
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
298
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
299 if(exists $feature_cache{$id.':'.$chr.':'.$start.':'.$end}){
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
300 $feature = $feature_cache{$id.':'.$chr.':'.$start.':'.$end};
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
301 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
302 else{
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
303
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
304 $feature = Bio::EnsEMBL::Funcgen::ExternalFeature->new
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
305 (
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
306 -display_label => $id,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
307 -start => $start,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
308 -end => $end,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
309 -strand => $strand,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
310 -feature_type => $features_by_name{$id},
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
311 -feature_set => $set,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
312 -slice => $slice_cache{$chr},
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
313 );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
314
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
315 # project if necessary
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
316 if ($new_assembly) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
317
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
318 $feature = $self->project_feature($feature, $new_assembly);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
319
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
320 if (! defined $feature) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
321 $proj_skipped ++;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
322 $skipped_features{$id.':'.$chr.':'.$start.':'.$end} = 'Failed projection';
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
323 next;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
324 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
325
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
326 #This was failing as old assembly seqs are not stored, hence are returned as Ns
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
327 #if ($old_seq ne $feature->seq){
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
328 # $skipped_features{$id.':'.$chr.':'.$start.':'.$end} = 'Projected sequence mismatch';
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
329 # $seq_skipped++;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
330 # next;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
331 #}
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
332
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
333 #Assembly mapping tends to ignore single seq mismatches, but does handle gaps.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
334 #This is not generally a problemas a new assembly is normally a reshuffle of existing
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
335 #clones/contigs which will have exactly the same seq(actually there is a small amount of change)
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
336 #but this only affected a handful of transcripts
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
337 #old super(contigs) which have be integrated into a chromosome are not mapped
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
338 #so we will lose these
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
339 #the rest (retired clones/contigs and new clones/contigs) are aligned
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
340 #but again mismatches tend to be ignored.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
341
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
342 #There may be a tendency for this later case to contain more mismatches due to an entirely new
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
343 #clone seqeunce, hence let's filter/count these?
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
344
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
345 #Tested and import using the following hack using old 67 DB to test seq mismatches
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
346 #only 1 failed.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
347 #my $old_slice = $v67_sa->fetch_by_region( undef, $chr, $start, $end, $strand);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
348
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
349 #if ($old_slice->seq ne $feature->seq){
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
350 # $skipped_features{$id.':'.$chr.':'.$start.':'.$end} = 'Projected sequence mismatch';
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
351 # $seq_skipped++;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
352 # next LINE;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
353 #}
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
354 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
355 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
356
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
357
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
358
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
359 ### DEFINE TRANSCRIPT XREF INFO
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
360
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
361 #Check transcript exists
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
362 $display_name = $self->get_core_display_name_by_stable_id($self->db->dnadb, $ens_id, 'transcript');
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
363
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
364
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
365 # ATTEMPT TO REANNOTATE
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
366 if (! defined $display_name){ # Transcript does not exist in current release
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
367
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
368 #Set to 0 as we are not storing this sid
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
369 $seen_mifeat_trans{$id.':'.$chr.':'.$start.':'.$end}{$ens_id} = 0;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
370
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
371 $self->log("$id $ens_id stable ID has been retired");
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
372 $retired_sids ++;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
373
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
374 #Try and re-annotate on newer overlapping transcripts
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
375 @txs = @{$trans_adaptor->fetch_all_by_Slice($feature->feature_Slice)};
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
376 @sid_dnames = ();
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
377
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
378 #COUNT unique miRNA features which have failed reannotated
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
379 if(! exists $failed_reassignment{$id.':'.$chr.':'.$start.':'.$end}){
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
380 $failed_reassignment{$id.':'.$chr.':'.$start.':'.$end} = 1;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
381 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
382
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
383
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
384
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
385 if (@txs) { #OVERLAPPING TRANSCRIPTS
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
386 $with_overlapping_tx ++;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
387
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
388 foreach my $tx(@txs){
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
389
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
390 #Check we have previously seen this xref
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
391 if(! exists $seen_mifeat_trans{$id.':'.$chr.':'.$start.':'.$end}{$tx->stable_id}){
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
392
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
393 #Do UTR checking here
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
394 $overlaps_3_utr = 0;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
395
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
396 #Transcript will always return wrt to feature_Slice of miRNA feature.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
397 #As miRNA are complimentary to the the mRNA, which is complimentary
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
398 #to the sense strand of the gene, these should always be on the same strand.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
399
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
400 #Could add some more detailed strand/UTR fail counts in here
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
401 #but leave for now
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
402 #$same_strand = 1;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
403
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
404 if($tx->seq_region_strand != $strand){
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
405 #$same_strand = 0;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
406 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
407 elsif($strand == 1){
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
408
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
409 if( ($end <= $tx->seq_region_end) &&
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
410 ($start > $tx->coding_region_end) ){
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
411 $overlaps_3_utr = 1;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
412 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
413
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
414 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
415 else{#Must be -1
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
416
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
417 if( ($end < $tx->coding_region_start) &&
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
418 ($start >= $tx->seq_region_start) ){
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
419 $overlaps_3_utr = 1;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
420 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
421 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
422
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
423 #could count no utr match here if we set same_strand boolean
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
424
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
425 if($overlaps_3_utr){
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
426 $display_name = $self->get_core_display_name_by_stable_id($self->db->dnadb,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
427 $tx->stable_id,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
428 'transcript');
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
429 push @sid_dnames, [$tx->stable_id, $display_name];
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
430 $seen_mifeat_trans{$id.':'.$chr.':'.$start.':'.$end}{$tx->stable_id} = 1;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
431 #want to count re-annotated xrefs here
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
432 #These may have been represented in the original file
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
433 $new_xrefs ++;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
434 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
435 else{
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
436 # FAILED annotate new sid
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
437 # This currently includes +ve and -ve strand transcripts
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
438 $failed_new_sids ++;
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 if(! @sid_dnames){
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
443 #FAILED TO REANNOTATE retired sid xref
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
444 $utr_failed_old_sids ++;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
445
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
446 next LINE;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
447 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
448 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
449 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
450 else{ #FAILED TO REANNOTATE XREF - NO OVERLAPPING TRANSCRIPTS
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
451 $no_proj_failed_old_sids ++;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
452 next LINE;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
453 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
454
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
455
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
456 #COUNT unique miRNA features which have failed reannotated
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
457 if(@sid_dnames){
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
458 $failed_reassignment{$id.':'.$chr.':'.$start.':'.$end} = 0
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
459 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
460
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
461 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
462 else { #Add xref for existing transcript
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
463 $seen_mifeat_trans{$id.':'.$chr.':'.$start.':'.$end} = {$ens_id => 1};
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
464 #$display_name = $ens_display_name;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
465 @sid_dnames = ([$ens_id, $display_name]);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
466 $existing_sids++;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
467 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
468
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
469
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
470 #shouldn't need this if as we call next for everycase above
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
471 #if (@xref_details) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
472 #Only if we have target transcripts
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
473
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
474 # STORE FEATURE
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
475 if (! exists $feature_cache{$id.':'.$chr.':'.$start.':'.$end}){
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
476 ($feature) = @{$extf_adaptor->store($feature)};
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
477 $feature_cache{$id.':'.$chr.':'.$start.':'.$end} = $feature;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
478 $cnt++;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
479 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
480
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
481
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
482 # STORE XREFS
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
483 foreach my $xref_info(@sid_dnames) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
484
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
485 #Handle release/version in xref version as stable_id version?
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
486
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
487 $dbentry = Bio::EnsEMBL::DBEntry->new
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
488 (
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
489 -dbname => $edb_name,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
490 -release => $schema_build,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
491 #-release => '58_37k',#'46_36h', #Hard coded due to schema to old to use with API
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
492 -status => 'KNOWNXREF',
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
493 #-display_label_linkable => 1,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
494 -db_display_name => 'EnsemblTranscript',
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
495 -type => 'MISC',
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
496 -primary_id => $xref_info->[0],
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
497 -display_id => $xref_info->[1],
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
498 -info_type => 'MISC',
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
499 -info_text => 'TRANSCRIPT',
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
500 -linkage_annotation => 'miRanda target - negative influence',
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
501 #could have version here if we use the correct dnadb to build the cache
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
502 -analysis => $analysis,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
503 );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
504
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
505 $dbentry_adaptor->store($dbentry, $feature->dbID, 'ExternalFeature', 1); #1 is ignore release flag
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
506 $total_xrefs++;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
507 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
508 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
509
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
510 close FILE;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
511
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
512 #scalar context returns count
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
513 my $miRNA_failed_reassignment = grep/1/, values %failed_reassignment;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
514 my $miRNA_skipped = $old_mid_skipped + $slice_skipped +
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
515 $proj_skipped + $seq_skipped + $miRNA_failed_reassignment;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
516
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
517 $self->log_header($set->name." Import Report");
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
518 $self->log(sprintf("%-090s", "miRNA feature:target pairs seen(i.e. input rows):").$row_cnt);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
519 $self->log(sprintf("%-090s","Stored NR miRanda miRNA ExternalFeatures:").$cnt);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
520 $self->log(sprintf("%-090s","Total skipped miRanda miRNA target features(inc reassigned):").$miRNA_skipped);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
521 $self->log(sprintf("%-090s","Old miRbase IDs skipped").$old_mid_skipped);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
522 $self->log(sprintf("%-090s","Skipped features on unknown slice:").$slice_skipped."\n");
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
523
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
524 if($new_assembly){
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
525 $self->log(sprintf("%-090s","Skipped due to failed assembly projection:").$proj_skipped);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
526 $self->log(sprintf("%-090s","Skipped due to seq mismatch for assembly projection:")."$seq_skipped\n");
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
527 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
528
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
529 $self->log("The following numbers are counted from the mappable/valid miRNA target features");
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
530 $self->log(sprintf("%-090s", "Total stored Transcript xrefs(current and retired re-assigned):"). $total_xrefs);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
531 $self->log(sprintf("%-090s", "Total current Transcript xrefs:"). $existing_sids);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
532 $self->log(sprintf("%-090s", "Total skipped miRanda miRNA target xrefs:").($previously_skipped + $miRNA_skipped));
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
533 $self->log(sprintf("%-090s", "Retired Transcript xrefs:").$retired_sids);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
534 $self->log(sprintf("%-090s", "Unique miRNA features which completely failed reassignment:").$miRNA_failed_reassignment);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
535 $self->log(sprintf("%-090s", "Total new Xrefs assigned due to retired Transcript:").$new_xrefs);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
536 $self->log(sprintf("%-090s", "Previously assigned Transcript Xrefs skipped:").$old_as_new_xrefs);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
537 $self->log(sprintf("%-090s", "Retired Transcript Xrefs with no new overlapping Transcript:").$no_proj_failed_old_sids);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
538 $self->log(sprintf("%-090s", "Retired Transcript Xrefs with new overlapping Transcript(s):").$with_overlapping_tx);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
539 $self->log(sprintf("%-090s", "Retired Transcript Xrefs with new overlapping Transcript(s), all fail 3'UTR/strand test:").
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
540 $utr_failed_old_sids);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
541 #This figure may include transcripts which would have failed in the original set!
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
542 $self->log(sprintf("%-090s","Total new Transcript xrefs considered which fail 3' UTR/strand test:"). $failed_new_sids);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
543 $self->log(sprintf("%-090s","True new Xref assignments due to retired Transcripts:").($new_xrefs - $old_as_new_xrefs));
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
544
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
545 #We also want unique miRNA feature which we re-assigned
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
546 #Hard to calculate as the re-assignment might be to a current transcript in the input
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
547
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
548 #Now set states
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
549 foreach my $status(qw(DISPLAYABLE MART_DISPLAYABLE)){
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
550 $set->adaptor->store_status($status, $set);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
551 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
552
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
553 return;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
554 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
555
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
556 1;