Raw content of Bio::EnsEMBL::Compara::Production::GenomicAlignBlock::CreateRules # # You may distribute this module under the same terms as perl itself # # POD documentation - main docs before the code =pod =head1 NAME Bio::EnsEMBL::Compara::RunnableDB::CreateRules =cut =head1 SYNOPSIS my $db = Bio::EnsEMBL::Compara::DBAdaptor->new($locator); my $repmask = Bio::EnsEMBL::Pipeline::RunnableDB::CreateRules->new ( -db => $db, -input_id => $input_id -analysis => $analysis ); $repmask->fetch_input(); #reads from DB $repmask->run(); $repmask->output(); $repmask->write_output(); #writes to DB =cut =head1 DESCRIPTION =cut =head1 CONTACT Describe contact details here =cut =head1 APPENDIX The rest of the documentation details each of the object methods. Internal methods are usually preceded with a _ =cut package Bio::EnsEMBL::Compara::Production::GenomicAlignBlock::CreateRules; use strict; use Bio::EnsEMBL::DBSQL::DBAdaptor; use Bio::EnsEMBL::Pipeline::RunnableDB; use Bio::EnsEMBL::Compara::DBSQL::DBAdaptor; use Bio::EnsEMBL::Hive; use vars qw(@ISA); @ISA = qw(Bio::EnsEMBL::Pipeline::RunnableDB); sub fetch_input { my $self = shift; $self->throw("No input_id") unless defined($self->input_id); $self->throw("Improper formated input_id") unless ($self->input_id =~ /{/); return 1; } sub run { return 1; } sub write_output { my $self = shift; my $input_hash = eval($self->input_id); $self->{'from_prefix'} = $input_hash->{'from'}; $self->{'to_prefix'} = $input_hash->{'to'}; $self->createBlastRules(); return 1; } ################################## # # subroutines # ################################## sub createBlastRules { my $self = shift; my $dataflowRuleDBA = $self->db->get_DataflowRuleAdaptor; my $analysisList = $self->db->get_AnalysisAdaptor->fetch_all(); my @fromList = (); foreach my $analysis (@{$analysisList}) { next unless($analysis->logic_name =~ /^$self->{'from_prefix'}/); push @fromList, $analysis; print("FROM: ", $analysis->logic_name,"\n"); } foreach my $to_analysis (@{$analysisList}) { next unless($to_analysis->logic_name =~ /^$self->{'to_prefix'}/); next if($to_analysis->logic_name eq $self->{'to_prefix'}); foreach my $from_analysis (@fromList) { print(" ",$from_analysis->logic_name," -> ", $to_analysis->logic_name, "\n"); $dataflowRuleDBA->create_rule($from_analysis, $to_analysis); } } foreach my $from_analysis (@fromList) { my $stats = $from_analysis->stats; $stats->status('LOADING'); $stats->update; } } 1;