diff variant_effect_predictor/Bio/EnsEMBL/Funcgen/RunnableDB/Annotation.pm @ 0:1f6dce3d34e0

Uploaded
author mahtabm
date Thu, 11 Apr 2013 02:01:53 -0400
parents
children
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/variant_effect_predictor/Bio/EnsEMBL/Funcgen/RunnableDB/Annotation.pm	Thu Apr 11 02:01:53 2013 -0400
@@ -0,0 +1,160 @@
+=pod 
+
+=head1 NAME
+
+Bio::EnsEMBL::Funcgen::RunnableDB::Annotation
+
+=head1 DESCRIPTION
+
+'Annotation' is a base class for runnables running the Annotatin Pipeline
+It performs common tasks such as connecting to the EFG DB etc...
+
+=cut
+
+package Bio::EnsEMBL::Funcgen::RunnableDB::Annotation;
+
+use warnings;
+use strict;
+
+use Bio::EnsEMBL::Funcgen::Utils::Helper;
+use Bio::EnsEMBL::DBSQL::DBConnection;
+use Bio::EnsEMBL::DBSQL::DBAdaptor;
+use Bio::EnsEMBL::Funcgen::DBSQL::DBAdaptor; 
+use Bio::EnsEMBL::Funcgen::InputSet;
+use Bio::EnsEMBL::Funcgen::DataSet;
+use Bio::EnsEMBL::Funcgen::FeatureSet;
+use Bio::EnsEMBL::Funcgen::AnnotatedFeature;
+use Bio::EnsEMBL::Utils::Exception qw(throw warning stack_trace_dump);
+use Data::Dumper;
+use DBI;
+
+#use base ('Bio::EnsEMBL::Hive::ProcessWithParams');
+use base ('Bio::EnsEMBL::Hive::Process');
+
+#This defines a set of parameters based on given parameters from the pipeline:
+sub fetch_input {   # nothing to fetch... just the DB parameters...
+  my $self = shift @_;
+
+  my $dnadb_params = $self->param('dnadb') || throw "No parameters for Core DB";
+  eval{  $self->_dnadba(Bio::EnsEMBL::DBSQL::DBAdaptor->new(%{ $dnadb_params })); };
+  if($@) { throw "Error creating the Core DB Adaptor: $@";  }    
+  if(!$self->_dnadba()){ throw "Could not connect to Core DB"; }
+  $self->_dnadb_params($dnadb_params);
+
+  #Get efg connection, otherwise fail..
+  my $efgdb_params = $self->param('efgdb') || throw "No parameters for EFG DB";
+
+  eval{
+       $self->_efgdba(Bio::EnsEMBL::Funcgen::DBSQL::DBAdaptor->new(
+								   %{ $efgdb_params },
+								   #Why is this not working???
+								   #-dnadb => $self->_dnadba,
+								   -dnadb_user => $self->_dnadba->dbc->username,
+								   -dnadb_port => $self->_dnadba->dbc->port,
+								   -dnadb_host => $self->_dnadba->dbc->host,
+								   -dnadb_dbname => $self->_dnadba->dbc->dbname,
+								  ));
+  };
+
+  if($@) { throw "Error creating the EFG DB Adaptor: $@";  }    
+  if(!$self->_efgdba()){ throw "Could not connect to EFG DB"; }
+  $self->_efgdb_params($efgdb_params);
+
+  #Get work db connection, otherwise fail..
+  my $workdb_params = $self->param('workdb') || throw "No parameters for Work server";
+  $self->_workdb_params($workdb_params);
+
+  my $species = $self->param('species') || throw "No species defined";
+  $self->_species($species);
+
+  #Not is use, currently...
+  #my $release = $self->param('release') || throw "Release number not specified";
+  #$self->_release($release);
+
+  my $work_dir = $self->param('work_dir') || throw "'work_dir' is a required parameter"; 
+  $self->_work_dir($work_dir);
+
+  #Work with conventions here too?? work_dir/output/dbname ??
+  my $output_dir = $self->param('output_dir') || throw "'output_dir' is a required parameter";
+  $self->_output_dir($output_dir);
+
+  return 1;
+}
+
+
+sub run {   
+  my $self = shift @_;
+
+  return 1;
+}
+
+
+sub write_output {  
+  my $self = shift @_;
+  
+  return 1;
+
+}
+
+
+#Private Generic getter and setter
+sub _getter_setter {
+  my ($self, $param_name, $param_value) = @_;
+  if(!$param_name){ return undef; }
+  if(!$param_value){ 
+    $param_value = $self->param($param_name);   
+  } else {
+    $self->param($param_name, $param_value);
+  }
+  return $param_value;
+}
+
+# Private getter / setters : Maybe do some validation in some cases...
+
+#Private getter / setter to the Work DB Connection params
+sub _workdb_params {
+  return $_[0]->_getter_setter('workdb_params',$_[1]);
+}
+
+#Private getter / setter to the EFG DB Adaptor
+sub _efgdba {
+  return $_[0]->_getter_setter('efgdb',$_[1]);
+}
+
+#Private getter / setter to the EFG DB Connection params
+sub _efgdb_params {
+  return $_[0]->_getter_setter('efgdb_params',$_[1]);
+}
+
+#Private getter / setter to the Core DB Adaptor
+sub _dnadba {
+  return $_[0]->_getter_setter('dnadb',$_[1]);
+}
+
+#Private getter / setter to the Core DB Connection params
+sub _dnadb_params {
+  return $_[0]->_getter_setter('dnadb_params',$_[1]);
+}
+
+#Private getter / setter to the Species name
+sub _species {
+  return $_[0]->_getter_setter('species',$_[1]);
+}
+
+#Private getter / setter to the work folder
+sub _work_dir {
+  return $_[0]->_getter_setter('work_dir',$_[1]);
+}
+
+#Private getter / setter to the output folder
+sub _output_dir {
+  return $_[0]->_getter_setter('output_dir',$_[1]);
+}
+
+#Private getter / setter to the release number
+sub _release {
+  return $_[0]->_getter_setter('release',$_[1]);
+}
+
+
+1;