diff --git a/misc-scripts/xref_mapping/XrefMapper/BasicMapper.pm b/misc-scripts/xref_mapping/XrefMapper/BasicMapper.pm index f4de7e48ce7cda549861c9985b2b57b31f3d174b..a6c757a5b6ad058b857d58ffb3e7c78106d327b5 100644 --- a/misc-scripts/xref_mapping/XrefMapper/BasicMapper.pm +++ b/misc-scripts/xref_mapping/XrefMapper/BasicMapper.pm @@ -70,14 +70,14 @@ my $xref_dbi; sub dump_seqs{ - my ($self) = @_; + my ($self, $location) = @_; # initialise DB connections $core_dbi = $self->dbi(); $xref_dbi = $self->xref()->dbi(); $self->dump_xref(); - $self->dump_ensembl(); + $self->dump_ensembl($location); } @@ -399,9 +399,9 @@ sub dump_subset{ =cut sub dump_ensembl{ - my ($self) = @_; + my ($self, $location) = @_; - $self->fetch_and_dump_seq(); + $self->fetch_and_dump_seq($location); } @@ -416,7 +416,7 @@ sub dump_ensembl{ =cut sub fetch_and_dump_seq{ - my ($self) = @_; + my ($self, $location) = @_; my $db = new Bio::EnsEMBL::DBSQL::DBAdaptor(-species => $self->species(), -dbname => $self->dbname(), @@ -449,15 +449,29 @@ sub fetch_and_dump_seq{ open(PEP,">".$self->ensembl_protein_file()) || die("Could not open protein file for writing: ".$self->ensembl_protein_file."\n"); - my $gene_adap = $db->get_GeneAdaptor(); - my @gene_ids = @{$gene_adap->list_dbIDs()}; + my $gene_adaptor = $db->get_GeneAdaptor(); + + + # fetch by location, or everything if not defined + my @genes; + if ($location) { + + my $slice_adaptor = $db->get_SliceAdaptor(); + my $slice = $slice_adaptor->fetch_by_name($location); + @genes = @{$gene_adaptor->fetch_all_by_Slice($slice)}; + + } else { + + @genes = @{$gene_adaptor->fetch_all()}; + + } + my $max = undef; if(defined($self->maxdump())){ $max = $self->maxdump(); } my $i =0; - foreach my $gene_id (@gene_ids){ - my $gene = $gene_adap->fetch_by_dbID($gene_id); + foreach my $gene (@genes){ foreach my $transcript (@{$gene->get_all_Transcripts()}) { $i++; my $seq = $transcript->spliced_seq();