Mercurial > repos > mahtabm > ensembl
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;
