diff variant_effect_predictor/Bio/EnsEMBL/Funcgen/RunnableDB/Motif.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/Motif.pm	Thu Apr 11 02:01:53 2013 -0400
@@ -0,0 +1,163 @@
+=pod 
+
+=head1 NAME
+
+Bio::EnsEMBL::Funcgen::RunnableDB::Motif
+
+=head1 DESCRIPTION
+
+'Funcgen::Motif' 
+
+TODO: Try to collate that to Funcgen
+
+=cut
+
+
+package Bio::EnsEMBL::Funcgen::RunnableDB::Motif;
+
+use warnings;
+use strict;
+
+use base ('Bio::EnsEMBL::Hive::Process');
+
+use Bio::EnsEMBL::DBSQL::DBAdaptor;
+use Bio::EnsEMBL::Funcgen::DBSQL::DBAdaptor;
+use Bio::EnsEMBL::Utils::Exception qw(throw warning stack_trace_dump);
+use Data::Dumper;
+
+sub fetch_input {   # nothing to fetch... just the parameters...
+  my $self = shift @_;
+
+  $self->SUPER::fetch_input();
+  
+  if(!$self->param('bin_dir')){ throw "No binary folder given"; }
+  $self->_bin_folder($self->param('bin_dir'));
+
+  if(!$self->param('species')){ throw "No species given"; }
+  $self->_species($self->param('species'));
+
+  if(!$self->param('bin_size')){ throw "No bin size given"; }
+  $self->_bin_size($self->param('bin_size'));
+
+  if(!$self->param('window_size')){ throw "No window size given"; }
+  $self->_window_size($self->param('window_size'));
+
+  #Get the core db... possibly make these non-mandatory
+  if(!$self->param('dnadb_host')){ throw "No core host given"; }
+  if(!$self->param('dnadb_port')){ throw "No core port given"; }
+  if(!$self->param('dnadb_user')){ throw "No core user given"; }
+  #if(!$self->param('dnadb_name')){ throw "No core dbname given"; }
+  my $dba;
+  eval{
+       $dba = Bio::EnsEMBL::DBSQL::DBAdaptor->new(
+						  -host => $self->param('dnadb_host'),
+						  -port => $self->param('dnadb_port'),
+						  -user => $self->param('dnadb_user'),
+						  -dbname => $self->param('dnadb_name'),
+						  -species => $self->_species,
+						 );
+  };
+  if($@) { throw "Error creating the Core DB Adaptor: $@";  }    
+  if(!$dba){ throw "Could not connect to Core DB"; }
+
+  #Get the efg db... always read only user
+  if(!$self->param('dbhost')){ throw "No host given"; }
+  if(!$self->param('dbport')){ throw "No port given"; }
+  if(!$self->param('dbuser')){ throw "No user given"; }
+  if(!$self->param('dbname')){ throw "No dbname given"; }
+  eval{
+       $self->_efgdba(Bio::EnsEMBL::Funcgen::DBSQL::DBAdaptor->new(
+								   -host => $self->param('dbhost'),
+								   -port => $self->param('dbport'),
+								   -user => $self->param('dbuser'),
+								   -dbname => $self->param('dbname'),
+								   -species => $self->_species,
+								   -dnadb => $dba,
+								  ));
+  };
+  if($@) { throw "Error creating the EFG DB Adaptor: $@";  }    
+  if(!$self->_efgdba()){ throw "Could not connect to EFG DB"; }
+
+  my $dnadbc = $self->_efgdba()->dnadb->dbc;
+  warn $dnadbc->host." ".$dnadbc->port." ".$dnadbc->username." ".$dnadbc->dbname;
+
+
+  if(!$self->param('feature_set')){ throw "No feature set given"; }
+  my $fseta = $self->_efgdba()->get_FeatureSetAdaptor();
+  my $fset = $fseta->fetch_by_name($self->param('feature_set'));
+  if(!$fset){
+    throw $self->param('feature_set')." is not a valid Feature Set";
+  }
+  $self->_feature_set($fset);
+
+  if(!$self->param('output_dir')){ throw "No output dir given"; }
+  $self->_output_dir($self->param('output_dir')."/".$self->_feature_set->name);
+
+  return 1;
+}
+
+sub run {   
+  my $self = shift @_;
+  
+  return 1;
+}
+
+
+sub write_output {  # Nothing is written at this stage (for the moment)
+
+  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 bin folder
+sub _bin_folder {
+  return $_[0]->_getter_setter('bin_folder',$_[1]);
+}
+
+#Private getter / setter to the EFG DB Adaptor
+sub _efgdba {
+  return $_[0]->_getter_setter('efgdb',$_[1]);
+}
+
+#Private getter / setter to the bin size
+sub _bin_size {
+  return $_[0]->_getter_setter('bin_size',$_[1]);
+}
+
+#Private getter / setter to the window size
+sub _window_size {
+  return $_[0]->_getter_setter('window_size',$_[1]);
+}
+
+#Private getter / setter to the output dir
+sub _output_dir {
+  return $_[0]->_getter_setter('output_dir',$_[1]);
+}
+
+#Private getter / setter to the feature set
+sub _feature_set {
+  return $_[0]->_getter_setter('feature_set',$_[1]);
+}
+
+#Private getter / setter to the species
+sub _species {
+  return $_[0]->_getter_setter('species',$_[1]);
+}
+
+1;