annotate variant_effect_predictor/Bio/EnsEMBL/Funcgen/RunnableDB/Funcgen.pm @ 3:d30fa12e4cc5 default tip

Merge heads 2:a5976b2dce6f and 1:09613ce8151e which were created as a result of a recently fixed bug.
author devteam <devteam@galaxyproject.org>
date Mon, 13 Jan 2014 10:38:30 -0500
parents 1f6dce3d34e0
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
0
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1 =pod
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
3 =head1 NAME
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
4
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
5 Bio::EnsEMBL::Funcgen::RunnableDB::Funcgen
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
6
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
7 =head1 DESCRIPTION
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
8
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
9 'Funcgen' is a base class for other runnables of the Funcgen Hive Pipeline
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
10 It performs common tasks such as connecting to the EFG DB etc...
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
11
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
12 =cut
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
13
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
14 package Bio::EnsEMBL::Funcgen::RunnableDB::Funcgen;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
15
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
16 use warnings;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
17 use strict;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
18
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
19 use Bio::EnsEMBL::Funcgen::Utils::Helper;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
20 use Bio::EnsEMBL::DBSQL::DBAdaptor;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
21 use Bio::EnsEMBL::Funcgen::DBSQL::DBAdaptor;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
22 use Bio::EnsEMBL::Funcgen::InputSet;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
23 use Bio::EnsEMBL::Funcgen::DataSet;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
24 use Bio::EnsEMBL::Funcgen::FeatureSet;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
25 use Bio::EnsEMBL::Funcgen::AnnotatedFeature;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
26 #use Bio::EnsEMBL::Hive::DBSQL::AnalysisDataAdaptor;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
27 use base ('Bio::EnsEMBL::Hive::Process');
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
28
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
29 use Bio::EnsEMBL::Utils::Exception qw(throw warning stack_trace_dump);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
30 use Data::Dumper;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
31
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
32 #This defines a set of parameters based on given parameters from the pipeline:
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
33 sub fetch_input { # nothing to fetch... just the DB parameters...
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
34 my $self = shift @_;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
35
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
36 #An example of debug, in case needed
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
37 #print Dumper $self->param('dnadb');
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
38 if(!$self->param('bin_dir')){ throw "Folder with funcgen binaries bin_dir required"; }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
39 $self->_bin_dir($self->param('bin_dir'));
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
40
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
41 my $dnadb_params = $self->param('dnadb') || throw "No parameters for Core DB";
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
42 my $efgdb_params = $self->param('efgdb') || throw "No parameters for EFG DB";
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
43
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
44 #Get efg connection, otherwise fail..
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
45 eval{
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
46 $self->_efgdba(Bio::EnsEMBL::Funcgen::DBSQL::DBAdaptor->new
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
47 (
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
48 %{ $efgdb_params },
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
49 #let efg dba hanle dnadb
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
50 {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
51 -dnadb_name => $dnadb_params->{-dbname},
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
52 -dnadb_user => $dnadb_params->{-user},
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
53 -dnadb_host => $dnadb_params->{-host},
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
54 -dnadb_port => $dnadb_params->{-port},
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
55 -dnadb_pass => $dnadb_params->{-pass},
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
56
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
57 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
58 ));
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
59
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
60 #Actually test connections
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
61 $self->_efgdba->dbc->db_handle;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
62 $self->_efgdba->dnadb->dbc->db_handle;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
63 };
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
64
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
65 if($@) { throw "Error creating the EFG DBAdaptor and/or dna DBAdaptor $@"; }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
66
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
67 #Set some params
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
68 my $cell_type = $self->param('cell_type') || throw "No cell_type given";
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
69 my $feature_type = $self->param('feature_type') || throw "No feature_type given";
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
70 my $experiment_name = $self->param('experiment_name') || throw "No experiment_name given";
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
71 $self->_experiment_name($experiment_name);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
72 my $set_name = $self->param('set_name') || $cell_type."_".$feature_type."_".$experiment_name;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
73 $self->_set_name($set_name);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
74 my $group_name = $self->param('group') || 'efg';
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
75 my $species = $self->param('species') || throw "No species defined";
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
76 $self->_species($species);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
77 my $assembly = $self->param('assembly') || throw "No assembly version given";
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
78 $self->_assembly($assembly);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
79 my $file_type = $self->param('file_type') || throw "No file type given";
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
80 $self->_file_type($file_type);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
81 my $work_dir = $self->param('work_dir') || throw "'work_dir' is a required parameter";
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
82 $self->_work_dir($work_dir);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
83
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
84
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
85
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
86 #Configure DBAdaptors
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
87 my $efgdba = $self->_efgdba();
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
88 #To avoid farm issues...
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
89 $efgdba->dbc->disconnect_when_inactive(1);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
90 $efgdba->dnadb->dbc->disconnect_when_inactive(1);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
91
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
92 #Fetch & Set object params
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
93 #CellType
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
94 my $cta = $efgdba->get_CellTypeAdaptor();
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
95 my $ct_obj = $cta->fetch_by_name($cell_type);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
96 if(!$ct_obj){ throw "Cell type $cell_type does not exist in the database"; }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
97 $self->_cell_type($ct_obj);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
98
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
99 #FeatureType
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
100 my $fta = $efgdba->get_FeatureTypeAdaptor();
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
101 my $ft_obj = $fta->fetch_by_name($feature_type);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
102 if(!$ft_obj){ throw "Feature type $feature_type does not exist in the database"; }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
103 $self->_feature_type($ft_obj);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
104
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
105 #ExperimentalGroup
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
106 my $ega = $efgdba->get_ExperimentalGroupAdaptor();
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
107 my $eg_obj = $ega->fetch_by_name($group_name);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
108 if(!$eg_obj){ throw "Experimental Group $group_name does not exist in the database"; }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
109 $self->_group($eg_obj);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
110
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
111
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
112 if($file_type eq 'sam'){
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
113 #Change the directory structure so it will agree with the rest, without the need to do uc()
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
114 my $sam_header = $self->_work_dir()."/sam_header/".$species."/".$species."_";
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
115 $sam_header .= $ct_obj->gender() ? $ct_obj->gender() : 'male';
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
116 #Carefull with naming standards...
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
117 #$sam_header .= "_".$assembly."_unmasked.fa.fai";
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
118 $sam_header .= "_".$assembly."_unmasked.fasta.fai";
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
119 $self->_sam_header($sam_header);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
120 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
121
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
122 #Work with conventions here too?? work_dir/output/dbname ??
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
123 my $output_dir = $self->param('output_dir') || throw "'output_dir' is a required parameter";
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
124 $self->_output_dir($output_dir."/".$experiment_name);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
125
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
126 return 1;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
127 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
128
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
129
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
130 sub run {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
131 my $self = shift @_;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
132
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
133 return 1;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
134 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
135
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
136
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
137 sub write_output {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
138 my $self = shift @_;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
139
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
140 return 1;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
141
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
142 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
143
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
144
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
145 #Private Function to check and create Experiment and Feature/Data sets as needed
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
146 #Requires some global parameters that are not set in Funcgen->fetch_input, such as
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
147 #'analysis', 'feature_set_name', 'data_set_name' (these could be given as local parameters...)
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
148 sub _check_Experiment {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
149
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
150 #Todo make it more generic and accept multiple input_subsets
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
151 #Also maybe pass parameters as hash list...
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
152 my ($self, $analysis, $input_subset, $fset_name) = @_;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
153
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
154 #Global parameters set in Funcgen->fetch_input
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
155 my $efgdba = $self->_efgdba();
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
156 my $set_name = $self->_set_name();
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
157 my $group = $self->_group();
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
158 my $cell_type = $self->_cell_type();
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
159 my $feature_type = $self->_feature_type();
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
160
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
161 my $iset_name = $set_name;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
162 my $dset_name = $fset_name;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
163
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
164 # set experiment: Reuse if already exists? (This comes from result sets)
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
165 my $ea = $efgdba->get_ExperimentAdaptor;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
166 my $exp = $ea->fetch_by_name($set_name);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
167
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
168 my @date = (localtime)[5,4,3];
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
169 $date[0] += 1900; $date[1]++;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
170
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
171 if (! defined $exp) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
172
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
173 #Group needs to be set manually, like Cell_Type and Feature_Type
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
174 #Do not create Group on the fly here, as it will cause concurrency issues...
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
175 $exp = Bio::EnsEMBL::Funcgen::Experiment->new
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
176 (
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
177 -NAME => $set_name,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
178 -EXPERIMENTAL_GROUP => $group,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
179 -DATE => join('-', @date),
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
180 -PRIMARY_DESIGN_TYPE => 'binding_site_identification',
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
181 -ADAPTOR => $ea,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
182 );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
183
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
184 ($exp) = @{$ea->store($exp)};
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
185
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
186 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
187 throw("Can't create experiment $set_name ") unless $exp;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
188
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
189 my $isa = $efgdba->get_InputSetAdaptor();
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
190 my $iset = $isa->fetch_by_name($iset_name);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
191
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
192 if (! defined $iset){
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
193
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
194 $iset = Bio::EnsEMBL::Funcgen::InputSet->new
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
195 (
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
196 -name => $iset_name,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
197 -experiment => $exp,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
198 -feature_type => $feature_type,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
199 -cell_type => $cell_type,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
200 -vendor => 'SOLEXA',
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
201 -format => 'SEQUENCING',
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
202 -feature_class => 'result'
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
203 # Analysis is not being used??
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
204 #-analysis => $self->feature_analysis,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
205 );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
206 warn "Storing new InputSet:\t$iset_name\n";
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
207 ($iset) = @{$isa->store($iset)};
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
208
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
209 $iset->add_new_subset($input_subset);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
210 $iset->adaptor->store_InputSubsets($iset->get_InputSubsets);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
211 } else {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
212
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
213 #We only expect one subset here (? why??)...
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
214 #shouldn't we be adding the control file also when used?? But this is SWEmbl-specific...
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
215 #And it should be the same file name...
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
216 #Maybe do some file checking here???
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
217 warn "InputSet already exists:\t$iset_name\n";
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
218 my @issets = @{$iset->get_InputSubsets};
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
219
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
220 #if(scalar(@issets) > 1){
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
221 # throw("InputSet $iset_name has more than one InputSubset:\t".join("\t", (map $_->name, @issets)));
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
222 #} elsif((scalar(@issets) == 1) && ($issets[0]->name ne $self->param('input_file'))){
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
223 # throw("InputSet $iset_name already has an InputSubset(".$issets[0]->name.") which does not match ".$self->param('input_file'));
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
224 #} elsif(scalar(@issets) == 0){ #we can just add this InputSubset
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
225 # $iset->add_new_subset($self->input_id);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
226 # $iset->adaptor->store_InputSubsets($iset->get_InputSubsets);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
227 #}
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
228
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
229 if(scalar(@issets)==0){
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
230 #we can just add this InputSubset. Add an extra 'input:' as prefix?
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
231 $iset->add_new_subset($input_subset);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
232 $iset->adaptor->store_InputSubsets($iset->get_InputSubsets);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
233 } else {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
234 #warn("Need to uncomment this section!! - it was commented just for testing purposes!!");
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
235 #we just need to check if our file(s) is(are) already here...
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
236 if(!$iset->get_subset_by_name($input_subset)){
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
237 #throw("InputSet $iset_name has InputSubsets(".join("\t", (map $_->name, @issets)).") which do not match ".$input_subset);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
238 #warn("InputSet $iset_name has InputSubsets(".join("\t", (map $_->name, @issets)).") which do not match ".$input_subset);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
239 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
240 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
241 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
242
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
243 my $fsa = $efgdba->get_FeatureSetAdaptor();
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
244 my $fset = $fsa->fetch_by_name($fset_name);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
245
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
246 if ( ! defined $fset ) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
247
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
248 $fset = Bio::EnsEMBL::Funcgen::FeatureSet->new
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
249 (
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
250 -analysis => $analysis,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
251 -feature_type => $feature_type,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
252 -cell_type => $cell_type,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
253 -name => $fset_name,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
254 -feature_class => 'annotated',
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
255 -experiment_id => $exp->dbID,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
256 #The adaptor is needed to store!
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
257 -adaptor => $fsa
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
258
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
259 );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
260
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
261 warn "Storing new FeatureSet:\t$fset_name\n";
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
262 ($fset) = @{$fsa->store($fset)};
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
263
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
264 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
265 else {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
266 warn "FeatureSet already exists:\t$fset_name\n";
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
267
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
268 if(@{$efgdba->get_AnnotatedFeatureAdaptor->fetch_all_by_FeatureSets([$fset])}){
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
269 throw "Feature Set $set_name already contains data. Please rollback before rerunning";
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
270 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
271
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
272 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
273
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
274 my $dsa = $efgdba->get_DataSetAdaptor;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
275 my $dset = $dsa->fetch_by_name($dset_name);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
276
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
277
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
278 if ( ! defined $dset ) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
279
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
280 $dset = Bio::EnsEMBL::Funcgen::DataSet->new
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
281 (
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
282 -SUPPORTING_SETS => [$iset],
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
283 -FEATURE_SET => $fset,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
284 -DISPLAYABLE => 1,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
285 -NAME => $dset_name,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
286 -SUPPORTING_SET_TYPE => 'input',
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
287 );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
288
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
289 warn "Storing new DataSet:\t$dset_name\n";
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
290 ($dset) = @{$dsa->store($dset)}
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
291 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
292 else {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
293
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
294 warn "DataSet already exists:\t$dset_name\n";
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
295
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
296 # need to check whether InputSets and supporting_sets are the same and
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
297 # possibly add InputSet to supporting_sets
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
298
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
299 my $ssets = $dset->get_supporting_sets();
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
300
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
301 my %ssets_dbIDs = ();
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
302 map { $ssets_dbIDs{$_->dbID}='' } (@{$ssets});
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
303 $dset->add_supporting_sets([ $iset ]) if (! exists $ssets_dbIDs{$iset->dbID});
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
304
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
305 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
306
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
307 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
308
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
309
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
310 #Private Generic getter and setter
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
311 sub _getter_setter {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
312 my ($self, $param_name, $param_value) = @_;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
313 if(!$param_name){ return undef; }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
314 if(!$param_value){
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
315 $param_value = $self->param($param_name);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
316 } else {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
317 $self->param($param_name, $param_value);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
318 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
319 return $param_value;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
320 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
321
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
322 # Private getter / setters : Maybe do some validation in some cases...
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
323
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
324 #Private getter / setter to the EFG DB Adaptor
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
325 sub _efgdba {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
326 return $_[0]->_getter_setter('efgdb',$_[1]);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
327 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
328
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
329 #Private getter / setter to the Core DB Adaptor
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
330 sub _dnadba {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
331 return $_[0]->_getter_setter('dnadb',$_[1]);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
332 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
333
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
334 #Private getter / setter to the Cell Type object
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
335 sub _cell_type {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
336 return $_[0]->_getter_setter('cell_type',$_[1]);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
337 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
338
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
339 #Private getter / setter to the Feature Type object
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
340 sub _feature_type {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
341 return $_[0]->_getter_setter('feature_type',$_[1]);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
342 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
343
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
344 #Private getter / setter to the Species name
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
345 sub _species {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
346 return $_[0]->_getter_setter('species',$_[1]);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
347 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
348
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
349 #Private getter / setter to the assembly name
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
350 sub _assembly {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
351 return $_[0]->_getter_setter('assembly',$_[1]);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
352 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
353
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
354 #Private getter / setter to the Analysis object
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
355 sub _analysis {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
356 return $_[0]->_getter_setter('analysis',$_[1]);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
357 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
358
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
359 #Private getter / setter to the Group
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
360 sub _group {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
361 return $_[0]->_getter_setter('group',$_[1]);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
362 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
363
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
364 #Private getter / setter to the Experiment Name (do not mix with the Set Name)
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
365 sub _experiment_name {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
366 return $_[0]->_getter_setter('experiment_name',$_[1]);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
367 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
368
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
369 #Private getter / setter to the Set Name
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
370 sub _set_name {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
371 return $_[0]->_getter_setter('set_name',$_[1]);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
372 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
373
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
374 #Private getter / setter to the file type
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
375 sub _file_type {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
376 return $_[0]->_getter_setter('file_type',$_[1]);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
377 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
378
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
379 #Private getter / setter to the sam header (only set when file type is sam)
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
380 sub _sam_header {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
381 return $_[0]->_getter_setter('sam_header',$_[1]);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
382 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
383
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
384 #Private getter / setter to the work folder
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
385 sub _work_dir {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
386 return $_[0]->_getter_setter('work_dir',$_[1]);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
387 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
388
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
389 #Private getter / setter to the output folder
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
390 sub _output_dir {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
391 return $_[0]->_getter_setter('output_dir',$_[1]);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
392 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
393
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
394 #Private getter / setter to the bin folder
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
395 sub _bin_dir {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
396 return $_[0]->_getter_setter('bin_dir',$_[1]);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
397 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
398
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
399 1;