Skip to content

Instantly share code, notes, and snippets.

@danstaines
Last active December 21, 2015 10:39
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save danstaines/6293539 to your computer and use it in GitHub Desktop.
Save danstaines/6293539 to your computer and use it in GitHub Desktop.
Script for dumping genes and "gene" simple features from subset of Ensembl Bacteria databases
#!/usr/bin/env perl
use strict;
use warnings;
use Bio::EnsEMBL::LookUp;
use Bio::Seq;
use Bio::EnsEMBL::Utils::IO::FASTASerializer;
print "Building helper\n";
my $helper = Bio::EnsEMBL::LookUp->new(-URL=>"http://bacteria.ensembl.org/registry.json",-NO_CACHE=>1);
my $pattern = 'haemophilus_.*';
print "Getting DBAs for $pattern\n";
my @dbas = @{$helper->get_all_by_name_pattern($pattern)};
for my $dba (@dbas) {
print "Working with ".$dba->species()."\n";
open my $filehandle, '>', $dba->species().'.fa' || die "Could not open output file";
my $serializer = Bio::EnsEMBL::Utils::IO::FASTASerializer->new($filehandle);
my @genes = @{$dba->get_GeneAdaptor()->fetch_all()};
print "Found ".scalar @genes." genes for ".$dba->species()."\n";
for my $gene (@genes) {
my $slice = $gene->feature_Slice();
my $seqobj = Bio::Seq->new(
-display_id => $gene->stable_id().' '.$slice->name().' '.($gene->description()||''),
-seq => $slice->seq());
$serializer->print_Seq($seqobj);
}
my @simple_features = grep{$_->analysis()->logic_name() eq 'gene'} @{$dba->get_SimpleFeatureAdaptor()->fetch_all()};
print "Found ".scalar @simple_features." gene simple features for ".$dba->species()."\n";
for my $simple_feature (@simple_features) {
my $slice = $simple_feature->feature_Slice();
my $seqobj = Bio::Seq->new(
-display_id => 'gene_feature:'.$simple_feature->dbID() . ' ' .$slice->name().' '.($simple_feature->display_label()||''),
-seq => $slice->seq());
$serializer->print_Seq($seqobj);
}
close $filehandle;
}
@danstaines
Copy link
Author

Dependent on ensembl/modules and ensemblgenomes-api/modules

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment