annotate variant_effect_predictor/Bio/EnsEMBL/Pipeline/FASTA/BlatIndexer.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 =pod
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
3 =head1 LICENSE
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
4
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
5 Copyright (c) 1999-2012 The European Bioinformatics Institute and
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
6 Genome Research Limited. All rights reserved.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
7
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
8 This software is distributed under a modified Apache license.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
9 For license details, please see
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
10
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
11 http://www.ensembl.org/info/about/code_licence.html
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
12
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
13 =head1 CONTACT
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
14
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
15 Please email comments or questions to the public Ensembl
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
16 developers list at <dev@ensembl.org>.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
17
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
18 Questions may also be sent to the Ensembl help desk at
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
19 <helpdesk@ensembl.org>.
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::Pipeline::FASTA::BlastIndexer
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
24
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
25 =head1 DESCRIPTION
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
26
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
27 Creates 2bit file of the given GZipped file. The resulting index
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
28 is created under the parameter location I<base_path> in blat/index. The filename
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
29 is prefixed with the port number of the blat server this file should be
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
30 run on.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
31
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
32 The module also performs filtering of non-reference sequence regions
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
33 and can filter the redundant Y chromosome piece for human (as 2bit does
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
34 not like repeated sequence region names).
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
35
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
36 Allowed parameters are:
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
37
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
38 =over 8
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
39
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
40 =item file - The file to index
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
41
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
42 =item program - The location of the faToTwoBit program
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
43
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
44 =item port_offset - Value to add onto the species_id from the website DB
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
45 to name the file correctly
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
46
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
47 =item base_path - The base of the dumps
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
48
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
49 =item index - The type of file to index; supported values are empty,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
50 I<dna>, I<dna_sm> or I<dna_rm>. If specified we will look for this
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
51 string in the filename surrounded by '.' e.g. .dna.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
52
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
53 =back
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
54
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
55 The registry should also have a DBAdaptor for the website schema
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
56 registered under the species B<multi> and the group B<web> for species_id to
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
57 Blat port number.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
58
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
59 =cut
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
60
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
61
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
62 package Bio::EnsEMBL::Pipeline::FASTA::BlatIndexer;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
63
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
64 use strict;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
65 use warnings;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
66 use base qw/Bio::EnsEMBL::Pipeline::FASTA::Indexer/;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
67
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
68 use File::Spec;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
69 use File::stat;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
70 use Bio::EnsEMBL::Utils::IO qw/work_with_file/;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
71 use Bio::EnsEMBL::Utils::Exception qw/throw/;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
72 use Bio::EnsEMBL::Registry;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
73
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
74 sub param_defaults {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
75 my ($self) = @_;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
76 return {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
77 program => 'faToTwoBit',
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
78 port_offset => 30000,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
79 'index' => 'dna', #or dna_rm and dna_sm
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
80 };
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
81 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
82
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
83 sub fetch_input {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
84 my ($self) = @_;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
85 $self->assert_executable($self->param('program'));
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
86 $self->assert_executable('zcat');
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
87 $self->assert_executable('gunzip');
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
88 return;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
89 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
90
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
91 sub run {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
92 my ($self) = @_;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
93 if($self->run_indexing()) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
94 $self->SUPER::run();
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
95 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
96 return;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
97 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
98
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
99 sub run_indexing {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
100 my ($self) = @_;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
101 my $index = $self->param('index');
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
102 if($index) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
103 my $file = $self->param('file');
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
104 return (index($file, ".${index}.") > -1) ? 1 : 0;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
105 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
106 return 1;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
107 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
108
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
109 sub index_file {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
110 my ($self, $file) = @_;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
111
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
112 my $target_file = $self->target_file();
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
113 my $cmd = sprintf(q{%s %s %s},
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
114 $self->param('program'), $file, $target_file);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
115
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
116 $self->info('About to run "%s"', $cmd);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
117 my $output = `$cmd 2>&1`;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
118 my $rc = $? >> 8;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
119 throw "Cannot run program '$cmd'. Return code was ${rc}. Program output was $output" if $rc;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
120 unlink $file or throw "Cannot remove the file '$file' from the filesystem: $!";
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
121
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
122 #Check the file size. If it's 16 bytes then reject as that is an empty file for 2bit
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
123 my $filesize = stat($target_file)->size();
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
124 if($filesize <= 16) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
125 unlink $file;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
126 my $msg = sprintf(
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
127 'The file %s produced a 2bit file %d byte(s). Lower than 17 bytes therefore empty 2 bit file',
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
128 $file, $filesize
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
129 );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
130 $self->throw($msg);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
131 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
132
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
133 return;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
134 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
135
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
136 sub decompress {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
137 my ($self) = @_;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
138
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
139 #If we have no non-reference seq regions then use normal decompress
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
140 if(! $self->has_non_refs()) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
141 return $self->SUPER::decompress();
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
142 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
143
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
144 #Filter for non-refs
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
145 my $source = $self->param('file');
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
146 my $target_dir = $self->target_dir();
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
147 my ($vol, $dir, $file) = File::Spec->splitpath($source);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
148 $file =~ s/.gz$//;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
149 my $target = File::Spec->catdir($target_dir, $file);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
150
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
151 my $allowed_regions = $self->allowed_regions();
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
152
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
153 $self->info('Decompressing %s to %s', $source, $target);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
154
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
155 open my $src_fh, '-|', "zcat $source" or throw "Cannot decompress $source to $target";
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
156 work_with_file($target, 'w', sub {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
157 my ($trg_fh) = @_;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
158 my $transfer = 0;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
159 while(my $line = <$src_fh>) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
160 #HEADER
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
161 if(index($line, '>') == 0) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
162 #regex is looking for NNN:NNN:NNN:1:80:1 i.e. the name
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
163 my ($name) = $line =~ />.+\s(.+:.+:.+:\d+:\d+:\d+)/;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
164 $transfer = ($allowed_regions->{$name}) ? 1 : 0;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
165 if($transfer) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
166 $self->info('%s was an allowed Slice', $name);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
167 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
168 else {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
169 $self->info('%s will be skipped; not a reference Slice', $name);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
170 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
171 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
172 print $trg_fh $line if $transfer;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
173 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
174 });
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
175 close($src_fh);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
176
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
177 return $target;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
178 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
179
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
180 sub allowed_regions {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
181 my ($self) = @_;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
182 my $filter_human = 1;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
183 my @slices = grep { $_->is_reference() } @{$self->get_Slices('core', $filter_human)};
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
184 my %hash = map { $_->name() => 1 } @slices;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
185 return \%hash;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
186 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
187
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
188 #Filename like 30061.Homo_sapiens.GRCh37.2bit
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
189 sub target_filename {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
190 my ($self) = @_;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
191 my $port = $self->blat_port();
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
192 my $name = $self->web_name();
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
193 my $assembly = $self->assembly();
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
194 return join(q{.}, $port, $name, $assembly, '2bit');
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
195 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
196
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
197 sub target_file {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
198 my ($self) = @_;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
199 my $target_dir = $self->target_dir();
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
200 my $target_filename = $self->target_filename();
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
201 return File::Spec->catfile($target_dir, $target_filename);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
202 return;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
203 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
204
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
205 sub target_dir {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
206 my ($self) = @_;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
207 return $self->get_dir('blat', $self->param('index'));
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
208 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
209
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
210 sub blat_port {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
211 my ($self) = @_;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
212 my $dba = Bio::EnsEMBL::Registry->get_DBAdaptor('multi', 'web');
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
213 my $id = $dba->dbc()->sql_helper()->execute_single_result(
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
214 -SQL => 'select species_id from species where name =?',
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
215 -PARAMS => [$self->web_name()]
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
216 );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
217 return $id + $self->param('port_offset');
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
218 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
219
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
220 sub has_non_refs {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
221 my ($self) = @_;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
222 my $sql = <<'SQL';
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
223 select count(*)
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
224 from attrib_type at
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
225 join seq_region_attrib sra using (attrib_type_id)
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
226 join seq_region sr using (seq_region_id)
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
227 join coord_system cs using (coord_system_id)
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
228 where cs.species_id =?
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
229 and at.code =?
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
230 SQL
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
231 my $dba = $self->get_DBAdaptor();
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
232 return $dba->dbc()->sql_helper()->execute_single_result(
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
233 -SQL => $sql, -PARAMS => [$dba->species_id(), 'non_ref']);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
234 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
235
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
236 1;