annotate variant_effect_predictor/Bio/EnsEMBL/Funcgen/Importer.pm @ 0:1f6dce3d34e0

Uploaded
author mahtabm
date Thu, 11 Apr 2013 02:01:53 -0400
parents
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
0
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2 =head1 LICENSE
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
3
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
4 Copyright (c) 1999-2012 The European Bioinformatics Institute and
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
5 Genome Research Limited. All rights reserved.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
6
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
7 This software is distributed under a modified Apache license.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
8 For license details, please see
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
9
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
10 http://www.ensembl.org/info/about/code_licence.html
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
11
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
12 =head1 CONTACT
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
13
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
14 Please email comments or questions to the public Ensembl
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
15 developers list at <ensembl-dev@ebi.ac.uk>.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
16
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
17 Questions may also be sent to the Ensembl help desk at
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
18 <helpdesk@ensembl.org>.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
19
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
20 =head1 NAME
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
21
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
22 Bio::EnsEMBL::Funcgen::Importer
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
23
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
24 =head1 SYNOPSIS
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
25
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
26 my $imp = Bio::EnsEMBL::Funcgen::Importer->new(%params);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
27 $imp->register_experiment();
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
28
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
29
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
30 =head1 DESCRIPTION
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
31
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
32 B<This program> is the main class coordinating import of tiling array design and experimental data.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
33 It utilises several underlying parser classes specific to array vendor or import file type.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
34
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
35 =cut
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
36
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
37 ################################################################################
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
38
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
39 package Bio::EnsEMBL::Funcgen::Importer;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
40
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
41 use Bio::EnsEMBL::Funcgen::Utils::EFGUtils qw(get_date open_file run_system_cmd);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
42 use Bio::EnsEMBL::Utils::Exception qw( throw deprecate );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
43 use Bio::EnsEMBL::Utils::Argument qw( rearrange );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
44 use Bio::EnsEMBL::Funcgen::Experiment;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
45 use Bio::EnsEMBL::Funcgen::DBSQL::DBAdaptor;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
46 use Bio::EnsEMBL::DBSQL::DBAdaptor;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
47
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
48 use File::Path;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
49 use strict;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
50 use vars qw(@ISA);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
51
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
52
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
53 ################################################################################
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
54
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
55 =head2 new
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
56
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
57 Description : Constructor method
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
58
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
59 Arg [1] : hash containing optional attributes:
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
60 -name Name of Experiment(dir)
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
61 -format of array e.g. Tiled(default)
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
62 -vendor name of array vendor
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
63 -description of the experiment
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
64 -pass DB password
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
65 -host DB host
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
66 -user DB user
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
67 -port DB port
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
68 -registry_host Host to load registry from
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
69 -registry_port Port for registry host
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
70 -registry_user User for registry host
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
71 -registry_pass Password for registry user
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
72 -ssh Flag to set connection over ssh via forwarded port to localhost (default = 0); remove?
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
73 -group name of experimental/research group
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
74 ` -location of experimental/research group
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
75 -contact e/mail address of primary contact for experimental group
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
76 -species
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
77 -assembly Genome assembly version i.e. 36 for NCBI36
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
78 -recover Recovery flag (default = 0)
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
79 -data_dir Root data directory (default = $ENV{'EFG_DATA'})
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
80 -output_dir review these dirs ???????
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
81 -input_dir ?????????
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
82 -import_dir ???????
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
83 -norm_dir ??????
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
84 -fasta dump FASTA flag (default =0)
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
85 -array_set Flag to treat all chip designs as part of same array (default = 0)
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
86 -array_name Name for array set
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
87 -array_file Path of array file to import for sanger ENCODE array
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
88 -result_set_name Name to give the raw and normalised result sets (default uses experiment and analysis name)
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
89 -norm_method Normalisation method (Nimblegen default = VSN_GLOG);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
90 -dbname Override for autogeneration of funcgen dbaname
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
91 -reg_config path to local registry config file (default = ~/ensembl.init || undef)
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
92 -design_type MGED term (default = binding_site_identification) get from meta/MAGE?
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
93
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
94 -farm Flag to submit jobs to farm e.g. normalisation jobs
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
95 -batch_job Flag to signify that this Importer is running as a prepared batch/farm job
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
96 -prepared Flag to signify result files have been previously imported in prepare mode
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
97 and file names will differ to those record in InputSubset
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
98
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
99
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
100 #-use_defaults This changes some mandatory parameters to optional, instead using either DEFAULT or the input file name for the following options -name, -input_set, -feature_type, -cell_type etc ???
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
101
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
102 -verbose
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
103 ReturnType : Bio::EnsEMBL::Funcgen::Importer
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
104 Example : my $Exp = Bio::EnsEMBL::Importer->new(%params);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
105 Exceptions : throws if mandatory params are not set or DB connect fails
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
106 Caller : General
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
107 Status : Medium - potential for %params names to change, remove %attrdata?
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
108
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
109 =cut
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
110
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
111 ################################################################################
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
112
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
113 sub new{
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
114 my ($caller) = shift;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
115
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
116 #my $reg = "Bio::EnsEMBL::Registry";
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
117 my $class = ref($caller) || $caller;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
118
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
119 #$user, $host, $port, $pass, $dbname, $db, $assm_version, $reg_config, $reg_db, $ucsc_coords, $verbose, $release, $reg_host, $reg_port, $reg_user, $reg_pass
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
120 #$ftype_name, $ctype_name,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
121
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
122 my ($name, $format, $vendor, $group, $location, $contact,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
123 $array_name, $array_set, $array_file, $data_dir, $result_files,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
124 $exp_date, $desc, $design_type, $output_dir, $input_dir,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
125 $batch_job, $farm, $prepared,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
126 $norm_method, $old_dvd_format, $parser_type)
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
127 = rearrange(['NAME', 'FORMAT', 'VENDOR', 'GROUP', 'LOCATION', 'CONTACT',
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
128 'ARRAY_NAME', 'ARRAY_SET', 'ARRAY_FILE', 'DATA_DIR', 'RESULT_FILES',
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
129 'EXPERIMENT_DATE', 'DESCRIPTION',
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
130 'DESIGN_TYPE', 'OUTPUT_DIR', 'INPUT_DIR', #to allow override of defaults
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
131 'BATCH_JOB', 'FARM', 'PREPARED', 'NORM_METHOD',
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
132 'OLD_DVD_FORMAT', 'PARSER'], @_);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
133
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
134
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
135
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
136 #### Define parent parser class based on vendor
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
137 throw("Mandatory argument -vendor not defined") if ! defined $vendor;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
138
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
139 #This will override the default Vendor Parser type
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
140 #Evals simply protect from messy errors if parser type not found
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
141 my $parser_error;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
142 my $vendor_parser = ucfirst(lc($vendor));
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
143
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
144
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
145 #WARNING evaling these parsers to enable pluggability hides errors in parser
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
146 #use a perl -MBio::EnsEMBL::Funcgen::Parsers:ParserType to debug
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
147 #get rid of all this case guessing and force correct parser name usage?
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
148
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
149
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
150 #WARNING
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
151 #Dynamic setting of ISA in this way reports the resultant object as Importer, when
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
152 #some throws/methods are actually in other base/custom Parsers
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
153 #This can seem a little counterintuitive, but allows plugability
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
154 #With out the need for separate control scripts
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
155
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
156
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
157 #Change this to be set and required/detected in the parse_and_import.pl script
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
158 #Then we can have Importer.pm as the base class and get rid of this.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
159 #as well as set_config methods?
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
160
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
161
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
162 eval {require "Bio/EnsEMBL/Funcgen/Parsers/${vendor_parser}.pm";};
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
163
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
164 if ($@) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
165 #Don't warn/throw yet as we might have a standard parser format
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
166
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
167 $parser_error .= "There is no valid parser for the vendor your have specified:\t".$vendor.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
168 "\nMaybe this is a typo or maybe you want to specify a default import format using the -parser option\n".$@;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
169 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
170
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
171
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
172
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
173 if (defined $parser_type) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
174
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
175 #try normal case first
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
176 eval {require "Bio/EnsEMBL/Funcgen/Parsers/${parser_type}.pm";};
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
177
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
178 if ($@) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
179 $parser_type = ucfirst(lc($parser_type));
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
180
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
181 #Now eval the new parser
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
182 eval {require "Bio/EnsEMBL/Funcgen/Parsers/${parser_type}.pm";};
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
183
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
184 if ($@) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
185
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
186 #Might be no default
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
187 my $txt = "There is no valid parser for the -parser format your have specified:\t".$parser_type."\n";
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
188
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
189 if (! $parser_error) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
190 $txt .= "Maybe this is a typo or maybe you want run with the default $vendor_parser parser\n";
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
191 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
192
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
193 throw($txt.$@);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
194 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
195
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
196 #warn about over riding vendor parser here
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
197 if (! $parser_error) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
198 #Can't log this as we haven't blessed the Helper yet
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
199 warn("WARNING\t::\tYou are over-riding the default ".$vendor." parser with -parser ".$parser_type);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
200 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
201 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
202 } else {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
203 throw($parser_error) if $parser_error;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
204 $parser_type = $vendor_parser;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
205 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
206
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
207
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
208 #we should now really set parser_type as an attrtibute?
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
209 unshift @ISA, 'Bio::EnsEMBL::Funcgen::Parsers::'.$parser_type;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
210 #change this to be called explicitly from the load script?
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
211
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
212 #### Create object from parent class
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
213
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
214 my $self = $class->SUPER::new(@_);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
215
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
216 #### Set vars and test minimum mandatory params for any import type
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
217
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
218 $self->{'name'} = $name || throw('Mandatory param -name not met'); #This is not mandatory for array design import
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
219 ## $self->{'user'} = $user || $ENV{'EFG_WRITE_USER'};
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
220 $self->vendor(uc($vendor)); #already tested
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
221 $self->{'format'} = uc($format) || 'TILED'; #remove default?
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
222 $self->group($group) if $group;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
223 $self->location($location) if $location;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
224 $self->contact($contact) if $contact;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
225 ## $species || throw('Mandatory param -species not met');
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
226 $self->array_name($array_name) if $array_name;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
227 $self->array_set($array_set) if $array_set;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
228 $self->array_file($array_file) if $array_file;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
229 $self->{'data_dir'} = $data_dir || $ENV{'EFG_DATA'};
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
230 $self->result_files($result_files)if $result_files;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
231 $self->experiment_date($exp_date) if $exp_date;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
232 $self->description($desc) if $desc; #experiment
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
233 ## $self->feature_set_description($fset_desc) if $fset_desc;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
234
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
235 #$assm_version || throw('Mandatory param -assembly not met');
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
236 #Only required if setting DB by params e.g db not passed or generated from reg
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
237 #i.e. most of the time
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
238 #Why was this made mandatory?
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
239 #Default to dnadb||efgdb assm from the dbname
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
240
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
241 $self->{'design_type'} = $design_type || 'binding_site_identification'; #remove default?
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
242 $self->{'output_dir'} = $output_dir if $output_dir; #config default override
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
243 $self->{'input_dir'} = $input_dir if $input_dir; #config default override
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
244 $self->farm($farm) if $farm;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
245 $self->batch_job($batch_job);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
246 $self->prepared($prepared);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
247 ## $self->{'ssh'} = $ssh || 0;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
248 ## $self->{'_dump_fasta'} = $fasta || 0;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
249 #$self->{'recover'} = $recover || 0; Now in BaseImporter
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
250 #check for ~/.ensembl_init to mirror general EnsEMBL behaviour
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
251 ## $self->{'reg_config'} = $reg_config || ((-f "$ENV{'HOME'}/.ensembl_init") ? "$ENV{'HOME'}/.ensembl_init" : undef);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
252 $self->{'old_dvd_format'} = $old_dvd_format || 0;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
253 ## $self->{'ucsc_coords'} = $ucsc_coords || 0;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
254 ## $self->{'verbose'} = $verbose || 0;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
255 ## $self->{'release'} = $release;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
256
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
257
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
258
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
259 ## if($reg_host && $self->{'reg_config'}){
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
260 ## warn "You have specified registry parameters and a config file:\t".$self->{'reg_config'}.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
261 ## "\nOver-riding config file with specified paramters:\t${reg_user}@${reg_host}:$reg_port";
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
262 ## }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
263
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
264
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
265 #Will a general norm method be applicable for all imports?
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
266 #Already casued problems with Bed imports... remove?
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
267 #Could set NORM_METHOD in Parser!!
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
268 #warn "Need to fully implement norm_method is validate_mage, remove ENV NORM_METHOD?";
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
269 $self->{'norm_method'} = $norm_method; # || $ENV{'NORM_METHOD'};
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
270
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
271 #if ($self->vendor ne 'NIMBLEGEN'){
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
272 # $self->{'no_mage'} = 1;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
273 # warn "Hardcoding no_mage for non-NIMBLEGEN imports";
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
274 # }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
275
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
276
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
277 # if($self->{'no_mage'} && $self->{'write_mage'}){
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
278 # throw('-no_mage and -write_mage options are mutually exclusive, please select just one');
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
279 # }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
280
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
281 ## #### Set up DBs and load and reconfig registry
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
282 ##
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
283 ## ### Load Registry
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
284 ## #Can we load the registry using the assembly version, then just redefine the efg DB?
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
285 ## #We have problems here if we try and load on a dev version, where no dev DBs are available on ensembldb
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
286 ## #Get the latest API version for the assembly we want to use
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
287 ## #Then load the registry from that version
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
288 ## #Then we can remove some of the dnadb setting code below?
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
289 ## #This may cause problems with API schema mismatches
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
290 ## #Can we just test whether the current default dnadb contains the assembly?
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
291 ## #Problem with this is that this will not have any other data e.g. genes etc
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
292 ## #which may be required for some parsers
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
293 ##
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
294 ## #How does the registry pick up the schema version??
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
295 ##
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
296 ## #We should really load the registry first given the dnadb assembly version
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
297 ## #Then reset the eFG DB as appropriate
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
298 ##
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
299 ##
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
300 ## if ($reg_host || ! defined $self->{'_reg_config'}) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
301 ## #defaults to current ensembl DBs
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
302 ## $reg_host ||= 'ensembldb.ensembl.org';
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
303 ## $reg_user ||= 'anonymous';
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
304 ##
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
305 ## #Default to the most recent port for ensdb
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
306 ## if( (! $reg_port) &&
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
307 ## ($reg_host eq 'ensdb-archive') ){
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
308 ## $reg_port = 5304;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
309 ## }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
310 ##
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
311 ## #This will try and load the dev DBs if we are using v49 schema or API?
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
312 ## #Need to be mindful about this when developing
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
313 ## #we need to tip all this on it's head and load the reg from the dnadb version!!!!!!!
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
314 ##
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
315 ## my $version_text= ($self->{'release'}) ? 'version '.$self->{'release'} : 'current version';
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
316 ## $self->log("Loading $version_text registry from $reg_user".'@'.$reg_host);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
317 ##
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
318 ## #Note this defaults API version, hence running with head code
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
319 ## #And not specifying a release version will find not head version
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
320 ## #DBs on ensembldb, resulting in an exception from reset_DBAdaptor below
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
321 ## $reg->load_registry_from_db(
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
322 ## -host => $reg_host,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
323 ## -user => $reg_user,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
324 ## -port => $reg_port,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
325 ## -pass => $reg_pass,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
326 ## #-host => "ens-staging",
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
327 ## #-user => 'ensro',
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
328 ## -db_version => $self->{'release'},#51
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
329 ## -verbose => $self->verbose,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
330 ## );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
331 ##
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
332 ## throw('Not sensible to set the import DB as the default eFG DB from '.$reg_host.', please define db params') if ((! $dbname) && (! $db));
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
333 ## }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
334 ## else{
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
335 ## $self->log("Loading registry from:\t".$self->{'_reg_config'});
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
336 ## $reg->load_all($self->{'_reg_config'}, 1);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
337 ## }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
338 ##
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
339 ##
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
340 ## #Need to test the DBs here, as we may not have loaded any!
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
341 ## #get_alias wil fail otherwise?
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
342 ## #This is a cyclical dependancy as we need alias to get species which we use to grab the DB
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
343 ## #alias is dependant on core DB being loaded with relevant meta entries.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
344 ## #revise this when we split the Importer
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
345 ##
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
346 ##
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
347 ## #Validate species
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
348 ## my $alias = $reg->get_alias($species) || throw("Could not find valid species alias for $species\nYou might want to clean up:\t".$self->get_dir('output'));
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
349 ## $self->species($alias);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
350 ## $self->{'param_species'} = $species;#Only used for dir generation
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
351 ##
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
352 ##
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
353 ## #SET UP DBs
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
354 ## if($db){
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
355 ## #db will have been defined before reg loaded, so will be present in reg
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
356 ##
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
357 ## if(! (ref($db) && $db->isa('Bio::EnsEMBL::Funcgen::DBSQL::DBAdaptor'))){
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
358 ## $self->throw('-db must be a valid Bio::EnsEMBL::Funcgen::DBSQL::DBAdaptor');
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
359 ## }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
360 ## }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
361 ## else{ #define eFG DB from params or registry
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
362 ##
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
363 ## if($reg_db){#load eFG DB from reg
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
364 ##
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
365 ## if($dbname){
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
366 ## throw("You cannot specify DB params($dbname) and load from the registry at the same time.");
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
367 ## }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
368 ##
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
369 ## $self->log('WARNING: Loading eFG DB from Registry');
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
370 ## $db = $reg->get_DBAdaptor($self->species(), 'funcgen');
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
371 ## throw("Unable to retrieve ".$self->species." funcgen DB from the registry") if ! $db;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
372 ## }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
373 ## else{#resets the eFG DB in the custom or generic registry
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
374 ##
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
375 ## $dbname || throw('Must provide a -dbname if not using default custom registry config');
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
376 ## #$user || throw('Must provide a -user parameter');#make this default to EFG_WRITE_USER?
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
377 ## $pass || throw('Must provide a -pass parameter');
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
378 ##
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
379 ## #remove this and throw?
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
380 ## if(! defined $host){
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
381 ## $self->log('WARNING: Defaulting to localhost');
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
382 ## $host = 'localhost';
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
383 ## }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
384 ##
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
385 ## $port ||= 3306;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
386 ## my $host_ip = '127.0.0.1';#is this valid for all localhosts?
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
387 ##
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
388 ## if ($self->{'ssh'}) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
389 ## $host = `host localhost`; #mac specific? nslookup localhost wont work on server/non-PC
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
390 ## #will this always be the same?
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
391 ##
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
392 ## if (! (exists $ENV{'EFG_HOST_IP'})) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
393 ## warn "Environment variable EFG_HOST_IP not set for ssh mode, defaulting to $host_ip for $host";
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
394 ## } else {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
395 ## $host_ip = $ENV{'EFG_HOST_IP'};
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
396 ## }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
397 ##
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
398 ## if ($self->host() ne 'localhost') {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
399 ## warn "Overriding host ".$self->host()." for ssh connection via localhost($host_ip)";
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
400 ## }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
401 ## }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
402 ##
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
403 ##
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
404 ## #data version is only used if we don't want to define the dbname
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
405 ## #This should never be guessed so don't need data_version here
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
406 ## #$dbname ||= $self->species()."_funcgen_".$self->data_version();
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
407 ##
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
408 ##
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
409 ## #Remove block below when we can
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
410 ## my $dbhost = ($self->{'ssh'}) ? $host_ip : $host;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
411 ##
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
412 ## #This isn't set yet!?
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
413 ## #When we try to load, say 49, when we only have 48 on ensembldb
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
414 ## #This fails because there is not DB set for v49, as it is not on ensembl DB
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
415 ## #In this case we need to load from the previous version
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
416 ## #Trap this and suggest using the -schema_version/release option
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
417 ## #Can we autodetect this and reload the registry?
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
418 ## #We want to reload the registry anyway with the right version corresponding to the dnadb
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
419 ## #We could either test for the db in the registry or just pass the class.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
420 ##
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
421 ## $db = $reg->reset_DBAdaptor($self->species(), 'funcgen', $dbname, $dbhost, $port, $self->user, $pass,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
422 ## {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
423 ## -dnadb_host => $reg_host,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
424 ## -dnadb_port => $reg_port,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
425 ## -dnadb_assembly => $assm_version,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
426 ## -dnadb_user => $reg_user,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
427 ## -dnadb_pass => $reg_pass,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
428 ## });
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
429 ##
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
430 ##
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
431 ## #ConfigRegistry will try and set this
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
432 ## #This will fail if there is already one in the registry as it will try
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
433 ## #and defined a new unique species so as not to overwrite the original
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
434 ## #e.g. homo_sapiens1
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
435 ##
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
436 ## #This is why it was orignally written backwards as we can't easily dynamically redefine
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
437 ## #an adaptor in the registry without ConfigRegistry trying to change the name
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
438 ## #the very act of creating a new db to redefine the registry with causes ConfigRegistry
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
439 ## #to try and register it with a unique species name
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
440 ##
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
441 ## #Delete the old funcgen DB from the registry first
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
442 ## #$reg->remove_DBAdaptor($self->species, 'funcgen');
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
443 ##
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
444 ## #ConfigRegistry will automatically configure this new db
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
445 ##
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
446 ## #$db = Bio::EnsEMBL::Funcgen::DBSQL::DBAdaptor->new(
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
447 ## # -user => $user,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
448 ## # -host => ($self->{'ssh'}) ? $host_ip : $host,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
449 ## # -port => $port,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
450 ## # -pass => $pass,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
451 ## # #we need to pass dbname else we can use non-standard dbs
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
452 ## # -dbname => $dbname,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
453 ## # -species => $self->species(),
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
454 ## # -group => 'funcgen',
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
455 ## # );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
456 ##
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
457 ##
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
458 ## #if we get a species like homo_sapiens1 here
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
459 ## #This is because ConfigRegistry is try to make the dbname different between the
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
460 ## #one already present and the one you're trying to add
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
461 ## }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
462 ## }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
463 ##
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
464 ##
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
465 ## ### VALIDATE DNADB
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
466 ## #This is now done in DBAdaptor
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
467 ##
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
468 ## #We can change this to just use the assembly version
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
469 ## #we could even have the wordy assmelby version from the meta table
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
470 ## #do the standard ensembl subs
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
471 ## #s/[A-Za-z]//g;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
472 ## #s/\.//g;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
473 ## #And then validate?
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
474 ## #Just stick to number version for now.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
475 ##
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
476 ##
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
477 ## #Now we need to set the dnadb_host params to avoid ensembldb defaults
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
478 ## #This should check the registry first
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
479 ## #Then load from the registry db?
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
480 ## #If we have a multi host registry config file this isn't going to work!
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
481 ##
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
482 ## #Is this required anymore as the DBAdaptor handles this?
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
483 ## #Not if we pass a db with an incorrect dnadb attached.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
484 ##
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
485 ## #if($db->_get_schema_build($db->dnadb()) !~ /_[0-9]+_${assm_version}[a-z]*$/){
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
486 ### my $warning = "WARNING: dnadb does not match assembly_version $assm_version. Using ensembldb.enembl.org to define the dnadb";
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
487 ### $warning .= ' rather than the reg_config' if (defined $self->{'_reg_config'});
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
488 ##
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
489 ## #We need to account for reg_config DBs which may have custom info in
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
490 ## #So try reg_config host first, then try ensembldb with warning
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
491 ## #Could have a reg_config only flag for core dbs
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
492 ## #Need to implement more params in set_dnadb_by_assembly_version
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
493 ### $self->log($warning);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
494 ##
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
495 ### $db->set_dnadb_by_assembly_version($assm_version);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
496 ### }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
497 ##
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
498 ##
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
499 ##
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
500 ##
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
501 ## #Test connections
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
502 ## $self->db($db);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
503 ## $db->dbc->db_handle;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
504 ## $db->dnadb->dbc->db_handle;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
505 ## #Set re/disconnect options
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
506 ##
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
507 ## #These really need setting dependant on the import parser
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
508 ## $db->dbc->disconnect_when_inactive(1);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
509 ## $db->dnadb->dbc->disconnect_when_inactive(1);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
510
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
511
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
512
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
513 ## ### Check analyses/feature_type/cell_type
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
514 ## if($feature_analysis){
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
515 ## my $fanal = $self->db->get_AnalysisAdaptor->fetch_by_logic_name($feature_analysis);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
516 ## throw("The Feature Analysis $feature_analysis does not exist in the database") if(!$fanal);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
517 ## $self->feature_analysis($fanal);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
518 ##
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
519 ## #This currently fails before the config gets loaded!
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
520 ## #Need to load config before this validation!
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
521 ## }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
522 ##
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
523 ## if($ctype_name){
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
524 ## my $ctype = $self->db->get_CellTypeAdaptor->fetch_by_name($ctype_name);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
525 ## throw("The CellType $ctype_name does not exist in the database") if(!$ctype);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
526 ## $self->cell_type($ctype);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
527 ## }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
528 ##
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
529 ## if ($ftype_name) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
530 ## my $ftype = $self->db->get_FeatureTypeAdaptor->fetch_by_name($ftype_name);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
531 ## throw("The FeatureType $ftype_name does not exist in the database") if(!$ftype);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
532 ## $self->feature_type($ftype);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
533 ## }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
534
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
535
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
536 #Set config here instead?
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
537 #So we can check all mandatory params
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
538 #Set vendor specific attr dependent vars
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
539
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
540 #Generic input dir
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
541 $self->{'input_dir'} ||= $self->get_dir("data").'/input/'.$self->{'param_species'}.'/'.$self->vendor().'/'.$self->name();
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
542
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
543 if (! -d $self->get_dir('input')) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
544
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
545 if (@{$self->result_files}) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
546 #This is really InputSet specific
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
547 #Could go in init_experiment_import
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
548 $self->log("Processing files:\n\t\t".join("\n\t\t",@{$self->result_files}));
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
549 } else {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
550 throw('input_dir is not defined or does not exist ('.$self->get_dir('input').')');
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
551 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
552 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
553
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
554 #Parser specific config
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
555 $self->set_config();
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
556
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
557
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
558 $self->debug(2, "Importer class instance created.");
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
559 $self->debug_hash(3, \$self);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
560
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
561 return ($self);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
562 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
563
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
564 =head2 registry_host
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
565
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
566 Example : my $reg_host = $imp->registry_host;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
567 Description: Accessor for registry host attribute
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
568 Returntype : string e.g. ensembldb.ensembl.org
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
569 Exceptions : None
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
570 Caller : general
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
571 Status : at risk
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
572
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
573 =cut
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
574
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
575 sub registry_host{
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
576 return $_[0]->{'reg_host'};
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
577 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
578
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
579 =head2 registry_user
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
580
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
581 Example : my $reg_user = $imp->registry_user;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
582 Description: Accessor for registry user attribute
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
583 Returntype : string e.g. ensembldb.ensembl.org
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
584 Exceptions : None
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
585 Caller : general
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
586 Status : at risk
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
587
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
588 =cut
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
589
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
590 sub registry_user{
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
591 return $_[0]->{'reg_user'};
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
592 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
593
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
594 =head2 registry_port
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
595
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
596 Example : my $reg_port = $imp->registry_port;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
597 Description: Accessor for registry port attribute
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
598 Returntype : string e.g. ensembldb.ensembl.org
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
599 Exceptions : None
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
600 Caller : general
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
601 Status : at risk
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
602
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
603 =cut
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
604
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
605 sub registry_port{
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
606 return $_[0]->{'reg_port'};
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
607 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
608
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
609 =head2 registry_pass
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
610
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
611 Example : my $reg_pass = $imp->registry_pass;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
612 Description: Accessor for registry pass attribute
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
613 Returntype : string e.g. ensembldb.ensembl.org
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
614 Exceptions : None
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
615 Caller : general
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
616 Status : at risk
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
617
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
618 =cut
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
619
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
620 sub registry_pass{
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
621 return $_[0]->{'reg_pass'};
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
622 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
623
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
624
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
625 #init method kept separate from new due to differing madatory check and set up
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
626
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
627 =head2 init_array_import
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
628
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
629 Example : $self->init_import();
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
630 Description: Initialises import by creating working directories
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
631 and by storing the Experiemnt
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
632 Returntype : none
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
633 Exceptions : warns and throws depending on recover and Experiment status
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
634 Caller : general
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
635 Status : at risk - merge with register_array_design
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
636
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
637 =cut
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
638
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
639 sub init_array_import{
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
640
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
641 my ($self) = shift;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
642
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
643 # we need to define which paramters we'll be storing
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
644 #use the logic names of the analyses as the field headers
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
645
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
646 #need to test for vendor here
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
647
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
648 #Sanger, NIMBLEGEN(no design_id issue, could get from the ndf, but we want it in the DesignNotes.txt)
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
649 #Then we can change the Array/Chip generation to soley use the DesignNotes.txt rather than SampleKey
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
650 #which is experiment specific
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
651 #or eFG format.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
652
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
653 $self->create_output_dirs('caches', 'fastas');
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
654
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
655
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
656 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
657
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
658
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
659 =head2 init_experiment_import
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
660
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
661 Example : $self->init_import();
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
662 Description: Initialises import by creating working directories
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
663 and by storing the Experiemnt
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
664 Returntype : none
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
665 Exceptions : warns and throws depending on recover and Experiment status
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
666 Caller : general
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
667 Status : at risk - merge with register exeriment
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
668
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
669 =cut
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
670
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
671 sub init_experiment_import{
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
672 my ($self) = shift;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
673
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
674 #Change this to take config mandatory params?
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
675 #No specific to exp import
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
676 #Name is used in set_config anyway
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
677 #Currently we only have array and experiment import, both of which should have names
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
678 #Make mandatory?
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
679
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
680 foreach my $tmp ("group", "data_dir") { #name now generically mandatory
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
681 throw("Mandatory arg $tmp not been defined") if (! defined $self->{$tmp});
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
682 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
683 #Should we separate path on group here too, so we can have a dev/test group?
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
684
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
685 #Create output dirs
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
686 #This should be moved to the Parser to avoid generating directories which are needed for different imports
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
687 $self->create_output_dirs('raw', 'norm', 'caches', 'fastas');
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
688 throw("No result_files defined.") if (! defined $self->result_files());
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
689
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
690 #Log input files
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
691 #if (@{$self->result_files()}) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
692 # $self->log("Found result files arguments:\n\t".join("\n\t", @{$self->result_files()}));
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
693 #}
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
694 #This is done in new
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
695
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
696 #check for cell||feature and warn if no met file supplied?
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
697
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
698 if ($self->norm_method) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
699 my $norm_anal = $self->db->get_AnalysisAdaptor->fetch_by_logic_name($self->norm_method);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
700
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
701 #should we list the valid analyses?
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
702 throw($self->norm_method.' is not a valid analysis') if ! $norm_anal;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
703 $self->norm_analysis($norm_anal);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
704 } else {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
705 $self->log('WARNING: No normalisation analysis specified');
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
706 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
707
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
708 #warn "Need to check env vars here or in Parser or just after set_config?";
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
709 #Need generic method for checking ENV vars in Helper
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
710 #check for ENV vars?
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
711 #R_LIBS
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
712 #R_PATH if ! farm
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
713 #R_FARM_PATH
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
714
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
715 $self->validate_group(); #import experimental_group
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
716
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
717 #Get experiment
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
718 my $exp_adaptor = $self->db->get_ExperimentAdaptor();
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
719 my $exp = $exp_adaptor->fetch_by_name($self->name()); #, $self->group());
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
720 $self->process_experiment_config if $self->can('process_experiment_config'); #Parsers::MAGE::process_experiment_config
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
721
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
722 #Moved MAGE support form here to MAGE.pm
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
723
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
724 #Recovery now set so deal with experiment
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
725 if ($self->recovery() && ($exp)) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
726 $self->log("Using previously stored Experiment:\t".$exp->name);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
727 } elsif ((! $self->recovery()) && $exp) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
728 throw("Your experiment name is already registered in the database, please choose a different \"name\", this will require renaming you input directory, or specify -recover if you are working with a failed/partial import.");
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
729 #can we skip this and store, and then check in register experiment if it is already stored then throw if not recovery
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
730 } else { # (recover && exp) || (recover && ! exp)
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
731
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
732
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
733 $exp = Bio::EnsEMBL::Funcgen::Experiment->new(
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
734 -EXPERIMENTAL_GROUP => $self->{egroup},
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
735 -NAME => $self->name(),
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
736 -DATE => $self->experiment_date(),
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
737 -PRIMARY_DESIGN_TYPE => $self->design_type(),
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
738 -DESCRIPTION => $self->description(),
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
739 -ADAPTOR => $self->db->get_ExperimentAdaptor(),
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
740 );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
741
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
742 ($exp) = @{$exp_adaptor->store($exp)};
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
743 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
744
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
745
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
746 $self->experiment($exp);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
747
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
748 #remove and add specific report, this is catchig some Root stuff
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
749 #$self->log("Initiated efg import with following parameters:\n".Data::Dumper::Dumper(\$self));
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
750
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
751 return;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
752 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
753
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
754
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
755 #Move this to new or init_experiment
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
756
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
757 =head2 validate_group
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
758
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
759 Example : $self->validate_group();
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
760 Description: Validates groups details
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
761 Returntype : none
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
762 Exceptions : throws if insufficient info defined to store new Group and is not already present
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
763 Caller : general
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
764 Status : Medium - check location and contact i.e. group name clash?
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
765
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
766 =cut
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
767
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
768 sub validate_group{
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
769 my ($self) = shift;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
770
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
771 my $egroup = $self->db->get_ExperimentalGroupAdaptor->fetch_by_name($self->group);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
772
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
773 if (! defined $egroup) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
774
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
775 throw("validate_group does not yet fully support ExperimentalGroups, please add manually");
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
776
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
777 #if ($self->location() && $self->contact()) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
778 # $self->db->import_group($self->group(), $self->location, $self->contact());
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
779 #} else {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
780 # throw("Group ".$self->group()." does not exist, please specify a location and contact to register the group");
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
781 #}
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
782 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
783
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
784 $self->{egroup} = $egroup;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
785
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
786 return;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
787 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
788
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
789 =head2 create_output_dirs
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
790
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
791 Example : $self->create_output_dirs();
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
792 Description: Does what it says on the tin, creates dirs in
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
793 the root output dir foreach @dirnames, also set paths in self
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
794 Arg [1] : mandatory - list of dir names
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
795 Returntype : none
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
796 Exceptions : none
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
797 Caller : general
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
798 Status : Medium - add throw?
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
799
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
800 =cut
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
801
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
802 sub create_output_dirs{
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
803 my ($self, @dirnames) = @_;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
804
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
805 #output dir created in control script
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
806 #avoids errors when logs generated first
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
807
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
808
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
809 foreach my $name (@dirnames) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
810
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
811 if ($name eq 'caches') {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
812 $self->{"${name}_dir"} = $ENV{'EFG_DATA'}."/${name}/".$self->db->dbc->dbname() if(! defined $self->{"${name}_dir"});
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
813 } elsif ($name eq 'fastas') {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
814 $self->{"${name}_dir"} = $ENV{'EFG_DATA'}."/${name}/" if(! defined $self->{"${name}_dir"});
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
815 } else {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
816 $self->{"${name}_dir"} = $self->get_dir('output')."/${name}" if(! defined $self->{"${name}_dir"});
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
817 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
818
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
819 if (! (-d $self->get_dir($name) || (-l $self->get_dir($name)))) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
820 $self->log("Creating directory:\t".$self->get_dir($name));
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
821 #This did not throw with mkdir!!
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
822 mkpath $self->get_dir($name) || throw('Failed to create directory: '. $self->get_dir($name));
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
823 chmod 0744, $self->get_dir($name);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
824 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
825 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
826
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
827 return;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
828 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
829
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
830 =head2 vendor
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
831
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
832 Example : $imp->vendor("NimbleGen");
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
833 Description: Getter/Setter for array vendor
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
834 Arg [1] : optional - vendor name
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
835 Returntype : string
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
836 Exceptions : none
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
837 Caller : general
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
838 Status : Stable
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
839
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
840 =cut
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
841
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
842 sub vendor{
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
843 my ($self) = shift;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
844
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
845 if (@_) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
846 $self->{'vendor'} = shift;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
847 $self->{'vendor'} = uc($self->{'vendor'});
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
848 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
849
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
850 return $self->{'vendor'};
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
851 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
852
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
853
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
854 =head2 feature_type
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
855
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
856 Example : $imp->feature_type($ftype);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
857 Description: Getter/Setter for Experiment FeatureType
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
858 Arg [1] : optional - Bio::EnsEMBL::Funcgen::FeatureType
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
859 Returntype : Bio::EnsEMBL::Funcgen::FeatureType
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
860 Exceptions : Throws if arg is not valid or stored
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
861 Caller : general
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
862 Status : at risk
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
863
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
864 =cut
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
865
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
866 sub feature_type{
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
867 my ($self) = shift;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
868
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
869 if (@_) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
870 my $ftype = shift;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
871
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
872 #do we need this as we're checking in new?
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
873 if (! ($ftype->isa('Bio::EnsEMBL::Funcgen::FeatureType') && $ftype->dbID())) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
874 throw("Must pass a valid stored Bio::EnsEMBL::Funcgen::FeatureType");
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
875 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
876
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
877 $self->{'feature_type'} = $ftype;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
878 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
879
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
880 return $self->{'feature_type'};
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
881 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
882
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
883 =head2 feature_analysis
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
884
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
885 Example : $imp->feature_analysis($fanal);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
886 Description: Getter/Setter for Analysis used for creating the imported Features
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
887 Arg [1] : optional - Bio::EnsEMBL::Analysis
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
888 Returntype : Bio::EnsEMBL::Analysis
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
889 Exceptions : Throws if arg is not valid or stored
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
890 Caller : general
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
891 Status : at risk
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
892
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
893 =cut
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
894
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
895 sub feature_analysis{
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
896 my ($self) = shift;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
897
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
898 if (@_) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
899 my $fanal = shift;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
900
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
901 #do we need this as we're checking in new?
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
902 if (! (ref ($fanal) && $fanal->isa('Bio::EnsEMBL::Analysis') && $fanal->dbID())) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
903 throw("Must pass a valid stored Bio::EnsEMBL::Analysis");
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
904 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
905
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
906 $self->{'feature_analysis'} = $fanal;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
907 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
908
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
909 return $self->{'feature_analysis'};
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
910 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
911
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
912 =head2 norm_analysis
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
913
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
914 Example : $imp->norm_analysis($anal);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
915 Description: Getter/Setter for the normalisation analysis
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
916 Arg [1] : optional - Bio::EnsEMBL::Analysis
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
917 Returntype : Bio::EnsEMBL::Analysis
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
918 Exceptions : Throws if arg is not valid or stored
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
919 Caller : general
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
920 Status : at risk
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
921
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
922 =cut
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
923
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
924 sub norm_analysis{
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
925 my ($self) = shift;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
926
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
927 if (@_) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
928 my $anal = shift;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
929
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
930 #do we need this as we're checking in new?
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
931 if (! (ref($anal) && $anal->isa('Bio::EnsEMBL::Analysis') && $anal->dbID())) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
932 throw("Must pass a valid stored Bio::EnsEMBL::Analysis");
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
933 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
934
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
935 $self->{'norm_analysis'} = $anal;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
936 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
937
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
938 return $self->{'norm_analysis'};
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
939 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
940
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
941
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
942
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
943 =head2 cell_type
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
944
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
945 Example : $imp->cell_type($ctype);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
946 Description: Getter/Setter for Experiment CellType
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
947 Arg [1] : optional - Bio::EnsEMBL::Funcgen::CellType
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
948 Returntype : Bio::EnsEMBL::Funcgen::CellType
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
949 Exceptions : Throws if arg is not valid or stored
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
950 Caller : general
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
951 Status : at risk
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
952
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
953 =cut
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
954
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
955 sub cell_type{
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
956 my ($self) = shift;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
957
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
958 if (@_) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
959 my $ctype = shift;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
960
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
961 #do we need this as we're checking in new?
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
962 if (! ($ctype->isa('Bio::EnsEMBL::Funcgen::CellType') && $ctype->dbID())) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
963 throw("Must pass a valid stored Bio::EnsEMBL::Funcgen::CellType");
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
964 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
965
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
966 $self->{'cell_type'} = $ctype;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
967 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
968
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
969 return $self->{'cell_type'};
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
970 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
971
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
972
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
973 ##=head2 ucsc_coords
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
974 ##
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
975 ## Example : $start += 1 if $self->ucsc_coords;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
976 ## Description: Getter for UCSC coordinate usage flag
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
977 ## Returntype : boolean
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
978 ## Exceptions : none
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
979 ## Caller : general
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
980 ## Status : at risk
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
981 ##
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
982 ##=cut
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
983 ##
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
984 ##sub ucsc_coords{
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
985 ## my $self = shift;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
986 ## return $self->{'ucsc_coords'};
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
987 ##}
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
988
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
989
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
990
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
991 =head2 array_file
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
992
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
993 Example : my $array_file = $imp->array_file();
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
994 Description: Getter/Setter for sanger/design array file
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
995 Arg [1] : optional - path to adf or gff array definition/mapping file
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
996 Returntype : string
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
997 Exceptions : none
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
998 Caller : general
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
999 Status : at risk
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1000
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1001 =cut
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1002
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1003 sub array_file{
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1004 my ($self) = shift;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1005 $self->{'array_file'} = shift if(@_);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1006 return $self->{'array_file'};
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1007 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1008
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1009 =head2 array_name
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1010
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1011 Example : my $array_name = $imp->array_name();
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1012 Description: Getter/Setter for array name
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1013 Arg [1] : optional string - name of array
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1014 Returntype : string
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1015 Exceptions : none
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1016 Caller : general
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1017 Status : at risk
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1018
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1019 =cut
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1020
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1021 sub array_name{
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1022 my ($self) = shift;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1023 $self->{'array_name'} = shift if(@_);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1024 return $self->{'array_name'};
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1025 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1026
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1027
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1028 =head2 array_set
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1029
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1030 Example : $imp->array_set(1);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1031 Description: Getter/Setter for array set flag
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1032 Arg [1] : optional boolean - treat all array chips as the same array
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1033 Returntype : boolean
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1034 Exceptions : none
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1035 Caller : general
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1036 Status : at risk
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1037
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1038 =cut
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1039
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1040 sub array_set{
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1041 my ($self) = shift;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1042 $self->{'array_set'} = shift if(@_);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1043 return $self->{'array_set'};
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1044 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1045
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1046
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1047 =head2 add_Array
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1048
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1049 Arg [1] : Bio::EnsEMBL::Funcgen::Array
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1050 Example : $self->add_Array($array);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1051 Description: Setter for array elements
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1052 Returntype : none
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1053 Exceptions : throws if passed non Array or if more than one Array set
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1054 Caller : Importer
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1055 Status : At risk - Implement multiple arrays? Move to Experiment?
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1056
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1057 =cut
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1058
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1059 sub add_Array{
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1060 my $self = shift;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1061
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1062 #do we need to check if stored?
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1063 if (! $_[0]->isa('Bio::EnsEMBL::Funcgen::Array')) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1064 throw("Must supply a Bio::EnsEMBL::Funcgen::Array");
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1065 } elsif (@_) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1066 push @{$self->{'arrays'}}, @_;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1067 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1068
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1069 throw("Does not yet support multiple array imports") if(scalar (@{$self->{'arrays'}}) > 1);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1070 #need to alter read_probe data at the very least
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1071
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1072 return;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1073 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1074
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1075
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1076
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1077 =head2 arrays
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1078
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1079 Example : foreach my $array(@{$imp->arrays}){ ...do an array of things ...};
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1080 Description: Getter for the arrays attribute
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1081 Returntype : ARRAYREF
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1082 Exceptions : none
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1083 Caller : general
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1084 Status : at risk
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1085
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1086 =cut
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1087
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1088 sub arrays{
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1089 my $self = shift;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1090
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1091 if (! defined $self->{'arrays'}) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1092 $self->{'arrays'} = $self->db->get_ArrayAdaptor->fetch_all_by_Experiment($self->experiment());
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1093 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1094
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1095 return $self->{'arrays'};
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1096 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1097
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1098
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1099
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1100 =head2 location
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1101
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1102 Example : $imp->vendor("Hinxton");
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1103 Description: Getter/Setter for group location
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1104 Arg [1] : optional - location
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1105 Returntype : string
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1106 Exceptions : none
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1107 Caller : general
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1108 Status : Stable
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1109
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1110 =cut
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1111
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1112
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1113 sub location{
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1114 my ($self) = shift;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1115 $self->{'location'} = shift if(@_);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1116 return $self->{'location'};
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1117 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1118
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1119
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1120 =head2 contact
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1121
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1122 Example : my $contact = $imp->contact();
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1123 Description: Getter/Setter for the group contact
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1124 Arg [1] : optional - contact name/email/address
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1125 Returntype : string
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1126 Exceptions : none
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1127 Caller : general
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1128 Status : Stable
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1129
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1130 =cut
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1131
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1132 sub contact{
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1133 my ($self) = shift;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1134 $self->{'contact'} = shift if(@_);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1135 return $self->{'contact'};
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1136 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1137
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1138 =head2 name
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1139
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1140 Example : $imp->name('Experiment1');
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1141 Description: Getter/Setter for the experiment name
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1142 Arg [1] : optional - experiment name
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1143 Returntype : string
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1144 Exceptions : none
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1145 Caller : general
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1146 Status : Stable
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1147
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1148 =cut
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1149
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1150
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1151 sub name{
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1152 my ($self) = shift;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1153 $self->{'name'} = shift if(@_);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1154 return $self->{'name'};
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1155 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1156
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1157 =head2 result_files
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1158
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1159 Example : $imp->result_files(\@files);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1160 Description: Getter/Setter for the result file paths
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1161 Arg [1] : Listref of file paths
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1162 Returntype : Listref
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1163 Exceptions : none
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1164 Caller : general
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1165 Status : At risk
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1166
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1167 =cut
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1168
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1169
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1170 sub result_files{
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1171 my ($self) = shift;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1172 $self->{'result_files'} = shift if(@_);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1173 return $self->{'result_files'};
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1174 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1175
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1176
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1177
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1178
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1179
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1180 =head2 experiment_date
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1181
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1182 Example : $imp->experiment_date('2006-11-02');
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1183 Description: Getter/Setter for the experiment date
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1184 Arg [1] : optional - date string in yyyy-mm-dd
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1185 Returntype : string
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1186 Exceptions : none
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1187 Caller : general
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1188 Status : At risk
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1189
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1190 =cut
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1191
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1192
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1193
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1194 sub experiment_date{
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1195 my ($self) = shift;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1196
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1197 if (@_) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1198 my $date = shift;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1199
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1200 if ($date !~ /[0-9]{4}-[0-9]{2}[0-9]{2}/o) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1201 throw('Parameter -experiment_date needs to fe in the format: YYYY-MM-DD');
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1202 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1203
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1204 $self->{'experiment_date'} = $date;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1205 } elsif ($self->vendor() eq "nimblegen" && ! defined $self->{'experiment_date'}) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1206 $self->{'experiment_date'} = &get_date("date", $self->get_config("chip_file")),
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1207 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1208
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1209 return $self->{'experiment_date'};
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1210 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1211
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1212
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1213
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1214 =head2 group
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1215
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1216 Example : my $exp_group = $imp->group();
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1217 Description: Getter/Setter for the group name
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1218 Arg [1] : optional - group name
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1219 Returntype : string
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1220 Exceptions : none
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1221 Caller : general
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1222 Status : Stable
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1223
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1224 =cut
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1225
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1226 sub group{
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1227 my ($self) = shift;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1228 $self->{'group'} = shift if(@_);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1229 return $self->{'group'};
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1230 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1231
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1232
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1233 =head2 description
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1234
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1235 Example : $imp->description("Human chrX H3 Lys 9 methlyation");
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1236 Description: Getter/Setter for the experiment element
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1237 Arg [1] : optional - experiment description
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1238 Returntype : string
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1239 Exceptions : none
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1240 Caller : general
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1241 Status : Stable
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1242
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1243 =cut
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1244
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1245 sub description{
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1246 my $self = shift;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1247
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1248 if (@_) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1249 $self->{'description'} = shift;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1250 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1251
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1252 return $self->{'description'};
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1253 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1254
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1255 ##=head2 feature_set_description
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1256 ##
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1257 ## Example : $imp->description("ExperimentalSet description");
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1258 ## Description: Getter/Setter for the FeatureSet description for an
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1259 ## InputSet import e.g. preprocessed GFF/Bed data
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1260 ## Arg [1] : optional - string feature set description
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1261 ## Returntype : string
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1262 ## Exceptions : none
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1263 ## Caller : general
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1264 ## Status : At risk
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1265 ##
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1266 ##=cut
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1267 ##
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1268 ##sub feature_set_description{
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1269 ## my $self = shift;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1270 ##
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1271 ## $self->{'feature_set_description'} = shift if @_;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1272 ##
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1273 ## return $self->{'feature_set_description'};
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1274 ##}
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1275
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1276 =head2 format
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1277
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1278 Example : $imp->format("Tiled");
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1279 Description: Getter/Setter for the array format
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1280 Arg [1] : optional - array format
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1281 Returntype : string
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1282 Exceptions : none
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1283 Caller : general
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1284 Status : Stable
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1285
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1286 =cut
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1287
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1288 sub format{
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1289 my ($self) = shift;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1290 $self->{'format'} = shift if(@_);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1291 return $self->{'format'};
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1292 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1293
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1294 =head2 experiment
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1295
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1296 Example : my $exp = $imp->experiment();
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1297 Description: Getter/Setter for the Experiment element
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1298 Arg [1] : optional - Bio::EnsEMBL::Funcgen::Experiment
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1299 Returntype : Bio::EnsEMBL::Funcgen::Experiment
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1300 Exceptions : throws if arg is not an Experiment
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1301 Caller : general
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1302 Status : Stable
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1303
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1304 =cut
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1305
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1306 sub experiment{
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1307 my ($self) = shift;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1308
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1309 if (@_) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1310
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1311 if (! $_[0]->isa('Bio::EnsEMBL::Funcgen::Experiment')) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1312 throw("Must pass a Bio::EnsEMBL::Funcgen::Experiment object");
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1313 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1314
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1315 $self->{'experiment'} = shift;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1316 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1317
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1318 return $self->{'experiment'};
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1319 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1320
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1321 ##=head2 db
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1322 ##
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1323 ## Example : $imp->db($funcgen_db);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1324 ## Description: Getter/Setter for the db element
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1325 ## Arg [1] : optional - Bio::EnsEMBL::Funcgen::DBSQL::DBAdaptor
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1326 ## Returntype : Bio::EnsEMBL::Funcgen::DBSQL::DBAdaptor
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1327 ## Exceptions : throws if arg is not an DBAdaptor
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1328 ## Caller : general
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1329 ## Status : Stable
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1330 ##
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1331 ##=cut
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1332 ##
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1333 ##sub db{
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1334 ## my $self = shift;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1335 ##
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1336 ## if (defined $_[0] && $_[0]->isa("Bio::EnsEMBL::Funcgen::DBSQL::DBAdaptor")) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1337 ## $self->{'db'} = shift;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1338 ## } elsif (defined $_[0]) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1339 ## throw("Need to pass a valid Bio::EnsEMBL::Funcgen::DBSQL::DBAdaptor");
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1340 ## }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1341 ##
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1342 ## return $self->{'db'};
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1343 ##}
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1344 ##
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1345 ##=head2 pass
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1346 ##
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1347 ## Example : $imp->pass("password");
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1348 ## Description: Getter/Setter for the db password
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1349 ## Arg [1] : optional - db password
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1350 ## Returntype : string
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1351 ## Exceptions : none
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1352 ## Caller : general
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1353 ## Status : Stable
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1354 ##
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1355 ##=cut
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1356 ##
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1357 ##
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1358 ##sub pass{
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1359 ## my $self = shift;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1360 ## $self->{'pass'} = shift if(@_);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1361 ## return $self->{'pass'};
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1362 ##}
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1363 ##
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1364 ##=head2 pass
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1365 ##
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1366 ## Example : $imp->host("hoastname");
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1367 ## Description: Getter/Setter for the db hostname
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1368 ## Arg [1] : optional - db hostname
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1369 ## Returntype : string
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1370 ## Exceptions : none
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1371 ## Caller : general
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1372 ## Status : Stable
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1373 ##
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1374 ##=cut
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1375 ##
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1376 ##sub host{
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1377 ## my $self = shift;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1378 ## $self->{'host'} = shift if(@_);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1379 ## return $self->{'host'};
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1380 ##}
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1381 ##
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1382 ##=head2 port
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1383 ##
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1384 ## Example : $imp->port(3306);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1385 ## Description: Getter/Setter for the db port number
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1386 ## Arg [1] : optional - db port number
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1387 ## Returntype : int
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1388 ## Exceptions : none
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1389 ## Caller : general
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1390 ## Status : Stable
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1391 ##
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1392 ##=cut
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1393 ##
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1394 ##sub port{
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1395 ## my $self = shift;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1396 ## $self->{'port'} = shift if(@_);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1397 ## return $self->{'port'};
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1398 ##}
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1399 ##
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1400 ##=head2 user
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1401 ##
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1402 ## Example : $imp->user("user_name");
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1403 ## Description: Getter/Setter for the db user name
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1404 ## Arg [1] : optional - db user name
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1405 ## Returntype : string
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1406 ## Exceptions : none
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1407 ## Caller : general
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1408 ## Status : Stable
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1409 ##
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1410 ##=cut
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1411 ##
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1412 ##sub user{
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1413 ## my $self = shift;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1414 ## $self->{'user'} = shift if(@_);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1415 ## return $self->{'user'};
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1416 ##}
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1417
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1418 ##=head2 dump_fasta
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1419 ##
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1420 ## Example : if($self->dump_fasta()){...do fasta dump...}
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1421 ## Description: Getter/Setter for the dump_fasta flag
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1422 ## Arg [1] : optional - 0 or 1
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1423 ## Returntype : boolean
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1424 ## Exceptions : none
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1425 ## Caller : self
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1426 ## Status : Stable
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1427 ##
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1428 ##=cut
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1429 ##
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1430 ##
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1431 ##sub dump_fasta{
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1432 ## my $self = shift;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1433 ## $self->{'_dump_fasta'} = shift if @_;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1434 ## return $self->{'_dump_fasta'};
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1435 ##}
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1436 ##
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1437
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1438
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1439 ##=head2 species
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1440 ##
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1441 ## Example : $imp->species("homo_sapiens");
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1442 ## Description: Getter/Setter for species
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1443 ## Arg [1] : optional - species name(alias?)
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1444 ## Returntype : string
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1445 ## Exceptions : none ? throw if no alias found?
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1446 ## Caller : general
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1447 ## Status : Medium - may move reg alias look up to this method
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1448 ##
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1449 ##=cut
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1450 ##
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1451 ##sub species{
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1452 ## my $self = shift;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1453 ##
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1454 ## #should we do reg alias look up here?
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1455 ## #Will we ever want to redefine species?
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1456 ## #Change to just getter?
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1457 ##
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1458 ## $self->{'species'} = shift if(@_);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1459 ##
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1460 ## return $self->{'species'};
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1461 ##}
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1462
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1463 =head2 get_dir
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1464
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1465 Example : $imp->get_dir("import");
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1466 Description: Retrieves full path for given directory
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1467 Arg [1] : mandatory - dir name
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1468 Returntype : string
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1469 Exceptions : none
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1470 Caller : general
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1471 Status : at risk - move to Helper?
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1472
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1473 =cut
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1474
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1475 sub get_dir{
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1476 my ($self, $dirname) = @_;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1477 return $self->get_data("${dirname}_dir");
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1478 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1479
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1480 =head2 norm_method
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1481
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1482 Example : my $norm_method = $imp->norm_method()
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1483 Description: Getter/Setter for normalisation method
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1484 Arg [1] : mandatory - method name
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1485 Returntype : string
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1486 Exceptions : none ? throw if no analysis with logic name
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1487 Caller : general
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1488 Status : At risk - restrict to logic_name and validate against DB, allow multiple
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1489
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1490 =cut
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1491
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1492 #Move to Nimblegen?
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1493 #Do we ever want to normalise other data?
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1494
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1495 sub norm_method{
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1496 my $self = shift;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1497
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1498 if (@_) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1499 $self->{'norm_method'} = shift;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1500 } elsif (! defined $self->{'norm_method'}) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1501 $self->{'norm_method'}= $self->get_config('norm_method');
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1502 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1503
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1504 return $self->{'norm_method'};
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1505 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1506
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1507
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1508 =head2 get_config
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1509
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1510 Arg [1] : mandatory - name of the data element to retrieve from the config hash
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1511 Example : %dye_freqs = %{$imp->get_config('dye_freqs')};
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1512 Description: returns data from the definitions hash
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1513 Returntype : various
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1514 Exceptions : none
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1515 Caller : Importer
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1516 Status : at risk - replace with direct calls in the inherited Defs class?
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1517
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1518 =cut
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1519
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1520
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1521 sub get_config{
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1522 my ($self, $data_name) = @_;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1523 return $self->get_data('config', $data_name); #will this cause undefs?
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1524 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1525
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1526
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1527
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1528
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1529
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1530 =head2 register_experiment
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1531
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1532 Example : $imp->register_experiment()
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1533 Description: General control method, performs all data import and normalisations
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1534 Arg [1] : optional - dnadb DBAdaptor
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1535 Returntype : none
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1536 Exceptions : throws if arg is not Bio::EnsEMBL::DBSQL::DBAdaptor
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1537 Caller : general
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1538 Status : Medium
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1539
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1540 =cut
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1541
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1542
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1543 #Need to split this method?
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1544 #Pre farm process
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1545 #Define and store all sets,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1546 #pre process input file once if required
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1547 #How are we going to be able to tell wether this has been done successfully?
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1548 #runner will catch error, therefore safe to assume that file is complete if farm job
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1549 #unless we are not running with farm
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1550
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1551 #farm specific processes
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1552 #actually parse and store data
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1553
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1554 #Can we separate these for different import types?
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1555
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1556 sub register_experiment{
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1557 my ($self) = shift;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1558
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1559 #Need to check for dnadb passed with adaptor to contructor
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1560 if (@_) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1561
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1562 if ( ! $_[0]->isa("Bio::EnsEMBL::DBSQL::DBAdaptor")) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1563 throw("You need to pass a valid dnadb adaptor to register the experiment");
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1564 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1565 $self->db->dnadb($_[0]);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1566 } elsif ( ! $self->db) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1567 throw("You need to pass/set a DBAdaptor with a DNADB attached of the relevant data version");
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1568 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1569
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1570 #This could still be the default core db for the current version
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1571 #warn here if not passed DB?
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1572 #These should be vendor independent, only the read methods should need specific order?
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1573
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1574 $self->init_experiment_import();
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1575 #can we just have init here instead?
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1576
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1577
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1578 #This could do with a rewrite to move some things to the parsers
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1579 #$self::SUPER->register_experiment
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1580
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1581 $self->write_validate_experiment_config if $self->can('write_validate_experiment_config');
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1582
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1583 #This is too array specific!
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1584 #Can we have an array of import_methods in the config?
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1585 #foreach my $method(@{$self->get_config{'import_methods'}}){
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1586 #$self->method;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1587 #}
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1588 #We're already doing this in read_data for each of these data_types
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1589
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1590 #Need to be able to run this separately, so we can normalise previously imported sets with different methods
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1591 #should be able t do this without raw data files e.g. retrieve info from DB
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1592 #Is this implemented?
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1593
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1594 $self->read_data("probe");
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1595 $self->read_data("results");
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1596
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1597
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1598 my $norm_method = $self->norm_method();
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1599
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1600 if (defined $norm_method) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1601 warn "norm method is $norm_method";
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1602
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1603 $self->R_norm($norm_method);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1604 #change this to $self->$norm_method
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1605 #so we can have non-R_norm normalisation
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1606 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1607
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1608
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1609 return;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1610 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1611
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1612 #Move array specific ones to Nimblegen.pm?
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1613 #Also used by ArrayDesign and Sanger.pm
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1614 #So need to create Array.pm baseclass, which is a Helper.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1615
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1616 =head2 store_set_probes_features
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1617
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1618 Arg [1] : mandatory - array chip id
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1619 Arg [2] : optional - Bio::EnsEMBL::Funcgen::ProbeSet
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1620 Arg [3] : mandatory - hashref of keys probe id, values are
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1621 hash of probe/features with values
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1622 Bio::EnsEMBL::Funcgen::Probe/Features for a given
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1623 probe set if defined.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1624 Example : $self->store_set_probes_features($ac->dbID(), $ops, \%pfs);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1625 Description: Stores probe set, probes and probe features
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1626 Returntype : none
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1627 Exceptions : none
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1628 Caller : self
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1629 Status : Medium
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1630
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1631 =cut
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1632
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1633 sub store_set_probes_features{
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1634 my ($self, $ac_id, $pf_hash, $ops) = @_;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1635
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1636 ### Deal with ProbeSets
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1637 if ($ops) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1638 $ops->size(scalar(keys %$pf_hash));
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1639 ($ops) = $self->db->get_ProbeSetAdaptor->store($ops);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1640 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1641
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1642 #If we're going to validate fully, we need to check for probes in this probeset on this array chip
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1643 #Update size if we have any new probes
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1644 #Overkill? Only do on recover? Do not read if array chip is IMPORTED
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1645 #This does not make any attempt to validate probes/set vs previously stored data
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1646
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1647 for my $probe_id (keys %$pf_hash) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1648
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1649 #set probeset in probe and store
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1650 #the process corresponding feature
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1651 my $probe = $pf_hash->{$probe_id}->{'probe'};
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1652 $probe->probeset($ops) if $ops;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1653 ($probe) = @{$self->db->get_ProbeAdaptor->store($probe)};
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1654
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1655 #Can't use get_all_Arrays here as we can't guarantee this will only ever be the array we've generated
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1656 #Might dynamically load array if non-present
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1657 #This is allowing multiple dbIDs per probe??? Is this wrong?
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1658 #$self->cache_probe_info($probe->get_probename(), $probe->dbID());###########Remove as we're now importing all then resolving
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1659
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1660
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1661 foreach my $feature (@{$pf_hash->{$probe_id}->{'features'}}) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1662 $feature->probe($probe);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1663 ($feature) = @{$self->db->get_ProbeFeatureAdaptor->store($feature)};
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1664 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1665 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1666
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1667 undef $ops; #Will this persist in the caller?
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1668 undef %{$pf_hash};
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1669
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1670 return;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1671 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1672
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1673
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1674 =head2 cache_slice
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1675
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1676 Arg [0] : string - region_name e.g. X
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1677 Arg [1] : optional - coordinate system name e.g. supercontig, defaults to chromosome
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1678 Example : my $slice = $self->cache_slice(12);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1679 Description: Caches or retrieves from cache a given slice
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1680 Returntype : Bio::EnsEMBL::Slice
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1681 Exceptions : throws f no region name specified
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1682 Caller : self
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1683 Status : At risk
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1684
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1685 =cut
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1686
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1687 sub cache_slice{
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1688 my ($self, $region_name, $cs_name, $total_count) = @_;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1689
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1690 throw("Need to define a region_name to cache a slice from") if ! $region_name;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1691 $self->{'slice_cache'} ||= {};
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1692 $region_name =~ s/chr//;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1693 $region_name = "MT" if $region_name eq "M";
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1694
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1695 if (! exists ${$self->{'seen_slice_cache'}}{$region_name}) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1696 my $slice = $self->slice_adaptor->fetch_by_region($cs_name, $region_name);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1697
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1698 #Set seen cache so we don't try this again
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1699 $self->{seen_slice_cache}{$region_name} = $slice;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1700
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1701 if (! $slice) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1702 warn("-- Could not generate a slice for ${cs_name}:$region_name\n");
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1703 } else {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1704
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1705 my $sr_name = $slice->seq_region_name; #In case we passed a slice name
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1706
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1707 if (@{$self->{seq_region_names}}) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1708 return if ! grep(/^${sr_name}$/, @{$self->{seq_region_names}}); #not on required slice
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1709 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1710 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1711
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1712 $self->{'slice_cache'}->{$region_name} = $slice;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1713 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1714
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1715 if ($total_count && exists ${$self->{'seen_slice_cache'}}{$region_name}) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1716 #This is an InputSet specific method
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1717 $self->count('total_features') if $self->can('count');
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1718 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1719
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1720 #Only return if exists to avoid creating hash key
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1721 return (exists $self->{'slice_cache'}->{$region_name}) ? $self->{'slice_cache'}->{$region_name} : undef;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1722 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1723
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1724 =head2 slice_cache
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1725
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1726 Example : my @seen_slices = values(%{$self->slice_cache});;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1727 Description: Returns the slice cache i.e. all the Slices seen in the data filtered
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1728 by the defined slices. This method can be used to run only the appropriate
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1729 slice jobs after a prepare stage.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1730 Returntype : Hashref of seq_region name Bio::EnsEMBL::Slice pairs
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1731 Exceptions : None
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1732 Caller : self
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1733 Status : At risk
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1734
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1735 =cut
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1736
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1737
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1738 sub slice_cache{
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1739 my $self = shift;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1740
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1741 return $self->{'slice_cache'};
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1742 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1743
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1744
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1745
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1746
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1747 =head2 cache_probe_info
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1748
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1749 Arg [0] : mandatory - probe name
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1750 Arg [1] : mandatory - probe dbID
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1751 Arg [2] : optioanl int - x coord of probe on array
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1752 Arg [3] : optional int - y coord of probe on array
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1753 Example : $self->cache_probe_info("Probe1", $probe->dbID());
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1754 Or for result files which do not have X & Y, we need to cache
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1755 X & Y from the design files: $self->cache_probe_info('Probe2', $probe->dbID(), $x, $y);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1756 Description: Setter for probe cache values
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1757 Returntype : none
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1758 Exceptions : throws is cache conflict encountered
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1759 Caller : self
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1760 Status : At risk - merge with following?
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1761
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1762 =cut
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1763
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1764 sub cache_probe_info{
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1765 my ($self, $pname, $pid, $x, $y) = @_;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1766
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1767 throw('Deprecated, too memory expensive, now resolving DB duplicates and using Tied File cache');
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1768 throw("Must provide a probe name and id") if (! defined $pname || ! defined $pid);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1769
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1770
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1771 #do we need to loop through the file here?
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1772 #if we make sure we're testing for a previous dbID before storing probes then we don't need to do this
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1773 #we can catch the error when we get the probe id as we can check for >1 id for the same probe name
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1774 #if (defined $self->{'_probe_cache'}->{$pname} && ($self->{'_probe_cache'}->{$pname}->[0] != $pid)) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1775 # throw("Found two differing dbIDs for $pname, need to sort out redundant probe entries");
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1776 #}
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1777
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1778 $self->{'_probe_cache'}->{$pname} = (defined $x && defined $y) ? [$pid, $x, $y] : [$pid];
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1779
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1780 return;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1781 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1782
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1783
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1784 =head2 get_probe_id_by_name_Array
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1785
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1786 Arg [1] : mandatory - probe name
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1787 Example : $pid = $self->get_probe_id_by_name($pname);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1788 Description: Getter for probe cache values
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1789 Returntype : int
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1790 Exceptions : none
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1791 Caller : self
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1792 Status : At risk - merge with previous, move to importer?
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1793
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1794 =cut
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1795
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1796 sub get_probe_id_by_name_Array{
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1797 my ($self, $name, $array) = @_;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1798
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1799 #this is only ever called for fully imported ArrayChips, as will be deleted if recovering
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1800 $self->resolve_probe_data() if(! exists $self->{'_probe_cache'}{$array->name()});
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1801
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1802 #we want to cycle through the given cache starting from the last position or 0.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1803 #we don't want to have to test for the size of the cache each time as this will be quite expensive
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1804 #so we should store sizes separately along with current position
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1805
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1806
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1807 my ($pid, $line);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1808
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1809 #check current line
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1810 if ($line = $self->{'_probe_cache'}{$array->name()}{'current_line'}) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1811 if ($line =~ /^\Q${name}\E\t/) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1812 $pid = (split/\t/o, $line)[1];
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1813 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1814 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1815
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1816
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1817 if (! $pid) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1818 while ($line = $self->{'_probe_cache'}{$array->name()}{'handle'}->getline()) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1819
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1820 if ($line =~ /^\Q${name}\E\t/) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1821 $pid = (split/\t/o, $line)[1];
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1822 $self->{'_probe_cache'}{$array->name()}{'current_line'} = $line;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1823 last;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1824 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1825 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1826 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1827
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1828 #do not remove this
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1829 if (! $pid) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1830 throw("Did not find probe name ($name) in cache, cache may need rebuilding, results may need sorting, or do you have an anomolaous probe?")
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1831 } else {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1832 chomp $pid;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1833 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1834
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1835 return $pid;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1836 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1837
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1838 =head2 get_probe_cache_by_Array
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1839
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1840 Arg[1] : Bio::EnsEMBL::Funcgen::Array
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1841 Arg[2] : boolean - from db flag, only to be used by Importer->resolve_probe_data !
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1842 Example : $self->get_probe_cache_by_Array();
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1843 Description: Gets the probe info cache which is an array tied to a file
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1844 Returntype : Boolean - True if cache has been generated and set successfully
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1845 Exceptions : none
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1846 Caller : general
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1847 Status : At risk
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1848
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1849 =cut
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1850
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1851 #from db flag should only be used by importer
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1852 #this is because there is no guarantee that it will be resolved unless
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1853 #called by resolve_probe_data
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1854 #which then renames the file and resets the handle
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1855 #can we clean this up and protect/hide this functionality?
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1856 #can we check the cache file name in the get methods and throw if it contains unresolved?
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1857 #make this private?
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1858
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1859 sub get_probe_cache_by_Array{
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1860 my ($self, $array, $from_db) = @_;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1861
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1862 my $msg = "Getting probe cache for ".$array->name();
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1863 $msg .= " from DB" if $from_db;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1864 $self->log($msg); #, 1);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1865
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1866 if (! ($array && $array->isa('Bio::EnsEMBL::Funcgen::Array') && $array->dbID())) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1867 throw('Must provide a valid stored Bio::EnsEMBL::Funcgen::Array object');
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1868 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1869
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1870 my $set = 0;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1871 my $cache_file = $self->get_dir('caches').'/'.$array->name().'.probe_cache';
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1872
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1873 ### Generate and resolve fresh cache from DB
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1874 if ($from_db) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1875
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1876 $cache_file .= '.unresolved'; #This will be renamed by the caller if it is resolved
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1877
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1878 if (exists $self->{'_probe_cache'}{$array->name()}) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1879 $self->log('Rebuilding probe_cache from DB for '.$array->name(), 1);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1880
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1881
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1882 #untie @{$self->{'_probe_cache'}{$array->name()}{'entries'}};
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1883 #close($self->{'_probe_cache'}{$array->name()}{'handle'});#do we need to do this?
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1884 delete $self->{'_probe_cache'}{$array->name()}; #implicitly closes
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1885 $self->log('Deleted old cache', 1);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1886 } else {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1887 $self->log('Building probe_cache from DB for '.$array->name(), 1);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1888 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1889
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1890 #Move this to ProbeAdaptor?
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1891 #This is where we'd set the unique key for a vendor and resolves duplicates based on the key
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1892 my $cmd = 'SELECT name, probe_id from probe WHERE array_chip_id IN ('.join(',', @{$array->get_array_chip_ids()}).') ORDER by name, probe_id';
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1893 $cmd = 'mysql '.$self->db->connect_string()." -e \"$cmd\" >".$cache_file;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1894 run_system_cmd($cmd);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1895
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1896 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1897
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1898 ### Set cache
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1899 if (-f $cache_file) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1900 $self->log('MD5 check here?',1);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1901 $self->{'_probe_cache'}{$array->name()}{'current_line'} = undef;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1902 $self->{'_probe_cache'}{$array->name()}{'handle'} = open_file($cache_file);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1903
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1904 #can we do a select count instead? and do this instead of the MD5?
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1905 #$cmd = "wc -l $cache_file";
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1906 #my $size = `$cmd`;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1907
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1908 $set = 1;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1909 } else {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1910 warn 'Failed to get probe cache for array:'.$array->name();
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1911 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1912
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1913 return $set;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1914 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1915
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1916
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1917 #should reorganise these emthods to split reading the array data, and the actual data
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1918 #currently:
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1919 #meta reads array and chip data
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1920 #probe reads probe_set, probes, which should definitely be in array, probe_feature? and results
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1921 #native data format may not map to these methods directly, so may need to call previous method if required data not defined
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1922
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1923
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1924 =head2 read_data
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1925
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1926 Example : $self->read_data("probe")
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1927 Description: Calls each method in data_type array from config hash
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1928 Arg [1] : mandatory - data type
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1929 Returntype : none
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1930 Exceptions : none
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1931 Caller : self
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1932 Status : At risk
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1933
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1934 =cut
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1935
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1936 sub read_data{
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1937 my($self, $data_type) = @_;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1938
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1939 map {my $method = "read_${_}_data"; $self->$method()} @{$self->get_config("${data_type}_data")};
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1940 return;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1941 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1942
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1943
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1944 =head2 design_type
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1945
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1946 Example : $self->design_type("binding_site_identification")
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1947 Description: Getter/Setter for experimental design type
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1948 Arg [1] : optional - design type
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1949 Returntype : string
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1950 Exceptions : none
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1951 Caller : general
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1952 Status : At risk
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1953
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1954 =cut
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1955
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1956 sub design_type{
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1957 my $self = shift;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1958 return $self->{'design_type'};
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1959 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1960
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1961
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1962 =head2 get_chr_seq_region_id
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1963
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1964 Example : $seq_region_id = $self->get_seq_region_id('X');
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1965 Description: Calls each method in data_type array from config hash
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1966 Arg [1] : mandatory - chromosome name
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1967 Arg [2] : optional - start value
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1968 Arg [3] : optional - end value
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1969 Returntype : int
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1970 Exceptions : none
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1971 Caller : self
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1972 Status : At risk
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1973
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1974 =cut
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1975
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1976 #convinience wrapper method
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1977 #could we use the seq region cache instead?
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1978 #this seems like a lot of overhead for getting the id
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1979 sub get_chr_seq_region_id{
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1980 my ($self, $chr, $start, $end) = @_;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1981 #what about strand info?
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1982
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1983 #do we need the start and stop?
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1984
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1985 #use start and stop to prevent problems with scaffodl assemblies, i.e. >1 seq_region_id
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1986 #my $slice = $self->slice_adaptor->fetch_by_region("chromosome", $chr, $start, $end);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1987 #we could pass the slice back to the slice adaptor for this, to avoid dbid problems betwen DBs
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1988
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1989 ###would need to implement other cs's here
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1990
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1991 return $self->slice_adaptor->fetch_by_region("chromosome", $chr, $start, $end)->get_seq_region_id();
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1992 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1993
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1994
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1995
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1996 =head2 vsn_norm
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1997
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1998 Example : $self->vsn_norm();
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1999 Description: Convinience/Wrapper method for vsn R normalisation
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2000 Returntype : none
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2001 Exceptions : none
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2002 Caller : general
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2003 Status : At risk
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2004
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2005 =cut
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2006
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2007 #Have Norm class or contain methods in importer?
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2008 #Need to have analysis set up script for all standard analyses.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2009
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2010 sub vsn_norm{
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2011 my $self = shift;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2012 return $self->R_norm("VSN_GLOG");
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2013 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2014
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2015
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2016 =head2 farm
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2017
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2018 Arg [1] : Boolean
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2019 Example : $importer->farm(1);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2020 Description: Flag to turn farm submission on
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2021 Returntype : Boolean
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2022 Exceptions : Throws is argument not a boolean
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2023 Caller : general
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2024 Status : At risk
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2025
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2026 =cut
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2027
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2028
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2029 sub farm{
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2030 my ($self, $farm) = @_;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2031
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2032 $self->{'farm'} ||= undef; #define farm
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2033
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2034 if (defined $farm) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2035 throw("Argument to farm must be a boolean 1 or 0") if(! ($farm == 1 || $farm == 0));
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2036 $self->{'farm'} = $farm;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2037 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2038
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2039 return $self->{'farm'};
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2040
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2041 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2042
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2043 =head2 batch_job
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2044
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2045 Arg [1] : Boolean
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2046 Example : $importer->batch_job(1);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2047 Description: Flag to turn on batch_job status
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2048 Returntype : Boolean
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2049 Exceptions : Throws is argument not a boolean
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2050 Caller : general
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2051 Status : At risk
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2052
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2053 =cut
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2054
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2055
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2056 sub batch_job{
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2057 my ($self, $batch_job) = @_;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2058
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2059 #$self->{'batch_job'} ||= undef;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2060
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2061 if (defined $batch_job) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2062 throw("Argument to batch_job must be a boolean 1 or 0") if(! ($batch_job == 1 || $batch_job == 0));
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2063 $self->{'batch_job'} = $batch_job;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2064 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2065
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2066 return $self->{'batch_job'};
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2067
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2068 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2069
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2070 =head2 prepared
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2071
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2072 Arg [1] : Boolean
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2073 Example : $importer->prepared(1);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2074 Description: Flag to turn on prepared file status
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2075 This signifies that the files have been previously imported
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2076 using prepare mode and may not match the InputSubset names
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2077 Returntype : Boolean
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2078 Exceptions : None
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2079 Caller : general
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2080 Status : At risk
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2081
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2082 =cut
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2083
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2084
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2085 sub prepared{
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2086 my ($self, $prepared) = @_;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2087 $self->{'prepared'} = $prepared if (defined $prepared);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2088 return $self->{'prepared'};
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2089 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2090
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2091
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2092 =head2 R_norm
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2093
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2094 Example : $self->R_norm(@logic_names);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2095 Description: Performs R normalisations for given logic names
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2096 Returntype : none
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2097 Exceptions : Throws if R exits with error code or if data not not valid for analysis
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2098 Caller : general
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2099 Status : At risk
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2100
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2101 =cut
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2102
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2103 sub R_norm{
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2104 my ($self, @logic_names) = @_;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2105 #This currently normalises a single two colour chip at a time
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2106 #rather than normalising across a set of chip
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2107 #also does in sets of analyses
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2108 #good for keeping data separate, but not efficient in terms of querying
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2109 #convert to use one script which only queries for each echip once, then does each anal
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2110
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2111
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2112 my $aa = $self->db->get_AnalysisAdaptor();
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2113 my $rset_adaptor = $self->db->get_ResultSetAdaptor();
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2114 my $ra_id = $aa->fetch_by_logic_name("RawValue")->dbID();
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2115 my %r_config = (
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2116 "VSN_GLOG" => {( libs => ['vsn'],
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2117 #norm_method => 'vsn',
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2118 )},
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2119
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2120 "T.Biweight" => {(
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2121 libs => ['affy'],
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2122 #norm_method => 'tukey.biweight',
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2123 )},
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2124 );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2125
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2126
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2127 foreach my $logic_name (@logic_names) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2128 #throw("Not yet implemented TukeyBiweight") if $logic_name eq "Tukey_Biweight";
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2129
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2130 #this has already been chcecked and set as the norm_analysis
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2131 #need to resolve this multi method approach
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2132 my $norm_anal = $aa->fetch_by_logic_name($logic_name);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2133
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2134
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2135
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2136 #This only creates an RSet for the IMPORT set
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2137 #So if we re-run with a different analysis
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2138 #tab2mage will have already been validated
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2139 #So RSet generation will be skipped
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2140 #We need to recreate the each non-import RSet for this norm analysis
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2141
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2142 #This also means the RSets are being created before the data has been imported
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2143 #This avoids having to parse tab2mage each time but means we have an uncertain status of these Rsets
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2144
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2145 my $rset = $self->get_import_ResultSet($norm_anal, 'experimental_chip');
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2146
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2147 my @chips = ();
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2148
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2149 if (! $rset) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2150 $self->log("All ExperimentalChips already have status:\t${logic_name}");
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2151 } else { #Got data to normalise and import
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2152 my @dbids;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2153 my $R_file = $self->get_dir("norm")."/${logic_name}.R";
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2154 my $job_name = $self->experiment->name()."_${logic_name}";
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2155 my $resultfile = $self->get_dir("norm")."/result.${logic_name}.txt";
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2156 my $outfile = $self->get_dir("norm")."/${logic_name}.out";
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2157
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2158 #How do we get farm job output i.e. run time memusage
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2159 #from interactive job?
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2160 #This assumes R_PATH
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2161 my $errfile = $self->get_dir("norm")."/${logic_name}.err";
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2162
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2163 #Let's build this better so we capture the farm output aswell as the job output.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2164 my $cmdline = "$ENV{'R_PATH'} --no-save < $R_file"; # >$errfile 2>&1";
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2165 #-K option waits for job to complete
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2166 my $bsub = "bsub -K -J $job_name ".$ENV{'R_BSUB_OPTIONS'}.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2167 " -e $errfile -o $outfile $ENV{'R_FARM_PATH'} CMD BATCH $R_file";
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2168
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2169 #Can we separate the out and err for commandline?
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2170 my $r_cmd = (! $self->farm()) ? "$cmdline >$outfile 2>&1" : $bsub;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2171
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2172 $self->backup_file($resultfile); #Need to do this as we're appending in the loop
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2173
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2174 #setup qurey
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2175 #warn "Need to add host and port here";
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2176 #Set up DB, defaults and libs for each logic name
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2177 my $query = "options(scipen=20);library(RMySQL);library(Ringo);";
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2178 #scipen is to prevent probe_ids being converted to exponents
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2179 #Ringo is for default QC
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2180
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2181 #foreach my $ln(@logic_names){
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2182
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2183 foreach my $lib (@{$r_config{$logic_name}{'libs'}}) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2184 $query .= "library($lib);";
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2185 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2186 #}
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2187
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2188 $query .= "con<-dbConnect(dbDriver(\"MySQL\"), host=\"".$self->db->dbc->host()."\", port=".$self->db->dbc->port().", dbname=\"".$self->db->dbc->dbname()."\", user=\"".$self->db->dbc->username()."\"";
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2189
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2190 #should use read only pass here as we are printing this to file
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2191 $query .= ", pass=\"".$self->db->dbc->password."\")\n";
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2192
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2193
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2194 #Build queries for each chip
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2195 foreach my $echip (@{$self->experiment->get_ExperimentalChips()}) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2196
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2197
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2198 #should implement logic name here?
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2199 #can't as we need seperate ResultSet for each
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2200
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2201
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2202 if ($echip->has_status($logic_name)) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2203 $self->log("ExperimentalChip ".$echip->unique_id()." already has status:\t$logic_name");
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2204 } else {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2205
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2206 #warn "Need to roll back here if recovery, as norm import may fail halfway through";
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2207
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2208 push @chips, $echip;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2209 my $cc_id = $rset->get_chip_channel_id($echip->dbID());
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2210
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2211 #if ($self->recovery()){
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2212 # $self->log('Rolling back results for ExperimentalChip('.$echip->dbID().") $logic_name");
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2213 # $self->db->rollback_results($cc_id) if $self->recovery();
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2214 # }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2215
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2216 $self->log("Building $logic_name R cmd for ".$echip->unique_id());
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2217 @dbids = ();
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2218
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2219 foreach my $chan (@{$echip->get_Channels()}) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2220
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2221 if ($chan->type() eq "EXPERIMENTAL") {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2222 push @dbids, $chan->dbID();
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2223 } else {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2224 unshift @dbids, $chan->dbID();
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2225 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2226 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2227
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2228 throw("vsn does not accomodate more than 2 channels") if (scalar(@dbids > 2) && $logic_name eq "VSN_GLOG");
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2229
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2230 #should do some of this with maps?
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2231 #HARDCODED metric ID for raw data as one
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2232
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2233 #Need to get total and experimental here and set db_id accordingly
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2234 #can probably do this directly into one df
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2235
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2236 $query .= "c1<-dbGetQuery(con, 'select r.probe_id as PROBE_ID, r.score as CONTROL_score, r.X, r.Y from result r, chip_channel c, result_set rs where c.table_name=\"channel\" and c.table_id=${dbids[0]} and c.result_set_id=rs.result_set_id and rs.analysis_id=${ra_id} and c.chip_channel_id=r.chip_channel_id')\n";
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2237
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2238 $query .= "c2<-dbGetQuery(con, 'select r.probe_id as PROBE_ID, r.score as EXPERIMENTAL_score, r.X, r.Y from result r, chip_channel c, result_set rs where c.table_name=\"channel\" and c.table_id=${dbids[1]} and c.result_set_id=rs.result_set_id and rs.analysis_id=${ra_id} and c.chip_channel_id=r.chip_channel_id')\n";
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2239
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2240 #Can we define some of the basic structures here and reuse in the QC and each norm method?
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2241
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2242
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2243 #Is this going to eat up memory?
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2244 #can we strip out and separate the data from c1 and c2 into RGList and
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2245 #individual vector for probe_ids, then rm c1 and c2 to free up memory
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2246
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2247 #create RGList object
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2248 $query .= "R<-as.matrix(c1['CONTROL_score'])\nG<-as.matrix(c2['EXPERIMENTAL_score'])\n";
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2249 $query .= "genes<-cbind(c1['PROBE_ID'], c1['X'], c1['Y'])\n";
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2250 $query .= "testRG<-new('RGList', list(R=R, G=G, genes=genes))\n";
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2251
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2252
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2253 #QC plots here before doing norm
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2254
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2255 #open pdf device
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2256 $query .= "pdf('".$self->get_dir('norm').'/'.$echip->unique_id."_QC.pdf', paper='a4', height = 15, width = 9)\n";
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2257 #set format
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2258 $query .= "par(mfrow = c(2,2), font.lab = 2)\n";
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2259
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2260 #Channel densisties
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2261 #These need limma or Ringo
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2262 $query .= "plotDensities(testRG)\n";
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2263
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2264 #MvA Plot
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2265
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2266 $query .= 'meanLogA<-((log(testRG$R, base=exp(2)) + log(testRG$G, base=exp(2)))/2)'."\n";
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2267 $query .= 'logIntRatioM<-(log(testRG$R, base=exp(2)) - log(testRG$G, base=exp(2)))'."\n";
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2268 $query .= "yMin<-min(logIntRatioM)\n";
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2269 $query .= "yMax<-max(logIntRatioM)\n";
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2270
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2271
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2272
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2273 #Need to validate yMax here
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2274 #If is is Inf then we need to sort the vector and track back until we find the high real number
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2275 #count number of Infs and note on MvA plot
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2276 $query .= "infCount<-0\n";
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2277 $query .= "if( yMax == Inf){; sortedM<-sort(logIntRatioM); lengthM<-length(logIntRatioM); indexM<-lengthM\n"
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2278 ."while (yMax == Inf){; indexM<-(indexM-1); yMax<-sortedM[indexM];}; infCount<-(lengthM-indexM);}\n";
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2279
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2280 #
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2281 $query .= "if(infCount == 0){\n";
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2282 $query .= 'plot(meanLogA, logIntRatioM, xlab="A - Average Log Ratio",ylab="M - Log Ratio",pch=".",ylim=c(yMin,yMax), main="'.$echip->unique_id.'")'."\n";
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2283 $query .= "} else {\n";
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2284 $query .= 'plot(meanLogA, logIntRatioM, xlab="A - Average Log Ratio",ylab="M - Log Ratio",pch=".",ylim=c(yMin,yMax), main="'.$echip->unique_id.'", sub=paste(infCount, " Inf values not plotted"));'."}\n";
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2285
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2286
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2287 #$query .= 'plot(log(testRG$R*testRG$G, base=exp(2))/2, log(testRG$R/testRG$G, base=exp(2)),xlab="A",ylab="M",pch=".",ylim=c(-3,3), main="'.$echip->unique_id."\")\n";
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2288
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2289 #Plate plots
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2290 $query .= 'image(testRG, 1, channel = "green", mycols = c("black", "green4", "springgreen"))'."\n";
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2291 $query .= 'image(testRG, 1, channel = "red", mycols = c("black", "green4", "springgreen"))'."\n";
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2292
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2293 $query .= "dev.off()\n";
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2294 #Finished QC pdf printing
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2295
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2296
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2297
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2298 #The simple preprocess step of Ringo is actually vsn, so we can nest these in line
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2299
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2300
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2301 ### Build Analyses cmds ###
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2302
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2303 if ($logic_name eq 'T.Biweight') {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2304
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2305 #log2 ratios
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2306 $query .= 'lr_df<-cbind((log(c2["EXPERIMENTAL_score"], base=exp(2)) - log(c1["CONTROL_score"], base=exp(2))))'."\n";
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2307
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2308 #Adjust using tukey.biweight weighted average
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2309 #inherits first col name
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2310 $query .= 'norm_df<-(lr_df["EXPERIMENTAL_score"]-tukey.biweight(as.matrix(lr_df)))'."\n";
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2311 $query .= 'formatted_df<-cbind(rep.int(0, length(c1["PROBE_ID"])), c1["PROBE_ID"], sprintf("%.3f", norm_df[,1]), rep.int('.$cc_id.', length(c1["PROBE_ID"])), c1["X"], c1["Y"])'."\n";
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2312
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2313 } elsif ($logic_name eq 'VSN_GLOG') {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2314 #could do this directly
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2315 $query .= "raw_df<-cbind(c1[\"CONTROL_score\"], c2[\"EXPERIMENTAL_score\"])\n";
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2316 #variance stabilise
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2317 $query .= "norm_df<-vsn(raw_df)\n";
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2318
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2319
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2320 #do some more calcs here and print report?
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2321 #fold change exponentiate? See VSN docs
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2322 #should do someplot's of raw and glog and save here?
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2323 #set log func and params
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2324 #$query .= "par(mfrow = c(1, 2)); log.na = function(x) log(ifelse(x > 0, x, NA));";
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2325 #plot
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2326 #$query .= "plot(exprs(glog_df), main = \"vsn\", pch = \".\");".
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2327 # "plot(log.na(exprs(raw_df)), main = \"raw\", pch = \".\");";
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2328 #FAILS ON RAW PLOT!!
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2329 #par(mfrow = c(1, 2))
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2330 #> meanSdPlot(nkid, ranks = TRUE)
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2331 #> meanSdPlot(nkid, ranks = FALSE)
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2332
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2333
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2334 #Now create table structure with glog values(diffs)
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2335 #3 sig dec places on scores(doesn't work?!)
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2336 $query .= 'formatted_df<-cbind(rep.int(0, length(c1["PROBE_ID"])), c1["PROBE_ID"], sprintf("%.3f", (exprs(norm_df[,2]) - exprs(norm_df[,1]))), rep.int('.$cc_id.', length(c1["PROBE_ID"])), c1["X"], c1["Y"])'."\n";
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2337
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2338 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2339 #load back into DB
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2340 #c3results<-cbind(rep("", length(c3["probe_id"])), c3["probe_id"], c3["c3_score"], rep(1, length(c3["probe_id"])), rep(1, length(c3["probe_id"])))
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2341 #may want to use safe.write here
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2342 #dbWriteTable(con, "result", c3results, append=TRUE)
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2343 #dbWriteTable returns true but does not load any data into table!!!
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2344
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2345 $query .= "write.table(formatted_df, file=\"${resultfile}\", sep=\"\\t\", col.names=FALSE, row.names=FALSE, quote=FALSE, append=TRUE)\n";
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2346
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2347 #tidy up here??
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2348 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2349 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2350
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2351 $query .= "q();";
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2352
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2353 open(RFILE, ">$R_file") || throw("Cannot open $R_file for writing");
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2354 print RFILE $query;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2355 close(RFILE);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2356
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2357 my $submit_text = "Submitting $logic_name job";
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2358 $submit_text .= ' to farm' if $self->farm;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2359 $self->log("${submit_text}:\t".localtime());
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2360 run_system_cmd($r_cmd);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2361 $self->log("Finished $logic_name job:\t".localtime());
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2362 $self->log('See '.$self->get_dir('norm').' for ExperimentalChip QC files');
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2363
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2364 #Now load file and update status
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2365 #Import directly here to avoid having to reparse all results if we crash!!!!
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2366 $self->log("Importing:\t$resultfile");
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2367 $self->db->load_table_data("result", $resultfile);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2368 $self->log("Finishing importing:\t$resultfile");
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2369
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2370
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2371 foreach my $echip (@chips) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2372 $echip->adaptor->store_status($logic_name, $echip);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2373 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2374
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2375 #Recreate all non-import RSets for analysis if not already present
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2376 #
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2377
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2378 my $rset_a = $self->db->get_ResultSetAdaptor();
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2379 my %seen_rsets;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2380
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2381 foreach my $anal_rset (@{$rset_a->fetch_all_by_Experiment($self->experiment)}) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2382 next if($anal_rset->name =~ /_IMPORT$/o);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2383 next if(exists $seen_rsets{$anal_rset->name});
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2384 next if $anal_rset->analysis->logic_name eq $norm_anal->logic_name;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2385 $seen_rsets{$rset->name} = 1;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2386 $anal_rset->analysis($norm_anal);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2387 $anal_rset->{'dbID'} = undef;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2388 $anal_rset->{'adaptor'} = undef;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2389
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2390 #add the chip_channel_ids from the new anal IMPORT set
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2391 foreach my $table_id (@{$anal_rset->table_ids}) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2392 $anal_rset->{'table_id_hash'}{$table_id} = $rset->get_chip_channel_id($table_id);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2393 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2394
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2395 $self->log('Adding new ResultSet '.$anal_rset->name.' with analysis '.$norm_anal->logic_name);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2396 $rset_a->store($anal_rset);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2397 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2398
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2399
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2400
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2401 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2402 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2403
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2404 return;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2405 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2406
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2407 #can we sub this? args: table_name, logic_name
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2408 #also use result_set_name
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2409 #would also clean all data for result set if recovery
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2410 #return would be result_set
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2411 #Can we extend this to incorporate InputSet parser define_sets?
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2412
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2413 sub get_import_ResultSet{
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2414 my ($self, $anal, $table_name) = @_;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2415
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2416 if (!($anal && $anal->isa("Bio::EnsEMBL::Analysis") && $anal->dbID())) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2417 throw("Must provide a valid stored Bio::EnsEMBL::Analysis");
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2418 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2419
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2420 $self->log("Getting import $table_name ResultSet for analysis:\t".$anal->logic_name());
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2421
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2422 my ($rset, @new_chip_channels);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2423 my $result_adaptor = $self->db->get_ResultSetAdaptor();
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2424 my $logic_name = $anal->logic_name;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2425 my $status = ($logic_name eq "RawValue") ? "IMPORTED" : $logic_name;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2426
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2427 if (($logic_name) eq 'RawValue' && ($table_name eq 'experimental_chip')) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2428 throw("Cannot have an ExperimentalChip ResultSet with a RawValue analysis, either specify 'channel' or another analysis");
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2429 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2430
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2431 #Build IMPORT Set for $table_name
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2432 foreach my $echip (@{$self->experiment->get_ExperimentalChips()}) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2433
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2434 #clean chip import and generate rset
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2435
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2436 if ($table_name eq 'experimental_chip') {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2437
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2438 if ($echip->has_status($status)) { #this translates to each channel have the IMPORTED_RawValue status
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2439 $self->log("ExperimentalChip(".$echip->unique_id().") already has status:\t".$status);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2440 } else {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2441 $self->log("Found ExperimentalChip(".$echip->unique_id().") without status $status");
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2442
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2443 push @new_chip_channels, $echip;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2444 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2445
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2446 } else { #channel
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2447
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2448 foreach my $chan (@{$echip->get_Channels()}) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2449
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2450 if ($chan->has_status($status)) { #this translates to each channel have the IMPORTED_RawValue status
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2451 $self->log("Channel(".$echip->unique_id()."_".$self->get_config('dye_freqs')->{$chan->dye()}.") already has status:\t".$status);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2452 } else {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2453 $self->log("Found Channel(".$echip->unique_id()."_".$self->get_config('dye_freqs')->{$chan->dye()}.") without status $status");
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2454 push @new_chip_channels, $chan;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2455 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2456 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2457 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2458
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2459 if (( ! $rset) && @new_chip_channels) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2460 my(@tmp) = @{$result_adaptor->fetch_all_by_name_Analysis($self->name()."_IMPORT", $anal)};
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2461
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2462 if (scalar(@tmp) > 1) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2463 throw('Found more than one IMPORT ResultSet for '.$self->name().'_IMPORT with analysis '.$logic_name);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2464 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2465
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2466 $rset = shift @tmp;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2467
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2468
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2469 #do we need to throw here if not recovery?
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2470 #what if we want the import result set elsewhere during the first import?
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2471
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2472 #if ($self->recovery()) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2473
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2474 #fetch by anal and experiment_id
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2475 #Need to change this to result_set.name!
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2476 # warn("add chip set handling here");
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2477
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2478 #my @tmp = @{$result_adaptor->fetch_all_by_Experiment_Analysis($self->experiment(), $anal)};
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2479 #throw("Found more than one ResultSet for Experiment:\t".$self->experiment->name()."\tAnalysis:\t".$anal->logic_name().')' if (scalar(@tmp) >1);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2480 #$rset = $tmp[0];
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2481
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2482 #warn "fetching rset with ".$self->name()."_IMPORT ". $anal->logic_name;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2483
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2484 #$rset = $result_adaptor->fetch_by_name_Analysis($self->name()."_IMPORT", $anal);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2485 warn("Warning: Could not find recovery ResultSet for analysis ".$logic_name) if ! $rset;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2486 #}
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2487
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2488 if (! $rset) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2489 $self->log("Generating new ResultSet for analysis ".$logic_name);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2490
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2491 $rset = Bio::EnsEMBL::Funcgen::ResultSet->new
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2492 (
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2493 -analysis => $anal,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2494 -table_name => $table_name,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2495 -name => $self->name()."_IMPORT",
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2496 -feature_type => $self->feature_type(),
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2497 -cell_type => $self->cell_type(),
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2498 );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2499
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2500 #These types should be set to NULL during the MAGE-XML validation if we have more than one type in an experiment
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2501
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2502 ($rset) = @{$result_adaptor->store($rset)};
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2503 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2504 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2505 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2506
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2507 #do we need this here as we're rolling back in the read methods?
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2508 #we only want to roll back those chips/channels which have not been registered
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2509
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2510 if ($self->recovery()) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2511
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2512 my $ec_adaptor = $self->db->get_ExperimentalChipAdaptor();
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2513
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2514 foreach my $cc (@new_chip_channels) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2515
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2516 #only roll back if already part of import set
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2517 #Not previously registered if not
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2518 if ($rset->contains($cc) && $rset->get_chip_channel_id($cc->dbID())) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2519
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2520 if ($table_name eq 'channel') {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2521 my $chan_name = $ec_adaptor->fetch_by_dbID($cc->experimental_chip_id())->unique_id()."_".
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2522 $self->get_config('dye_freqs')->{$cc->dye()};
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2523 $self->log("Rolling back results for $table_name:\t".$chan_name);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2524
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2525 } else {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2526 $self->log("Rolling back results for $table_name:\t".$cc->unique_id);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2527 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2528
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2529 $self->rollback_results([$rset->get_chip_channel_id($cc->dbID())]);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2530 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2531 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2532 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2533
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2534
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2535 #check whether it is present in the ResultSet and add if not
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2536 if ($rset) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2537 #ids will already be present if not rset i.e. already imported
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2538
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2539 foreach my $cc (@new_chip_channels) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2540 $rset->add_table_id($cc->dbID()) if(! $rset->contains($cc));
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2541 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2542 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2543
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2544
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2545
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2546 if ($rset) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2547 $result_adaptor->store_chip_channels($rset);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2548 } else {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2549 $self->log("All ExperimentalChips have status:\t$status");
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2550 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2551
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2552 #this only returns a result set if there is new data to import
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2553 return $rset;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2554 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2555
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2556
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2557
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2558 =head2 resolve_probe_data
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2559
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2560 Example : $self->resolve_probe_data();
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2561 Description: Resolves DB probe duplicates and builds local probe cache
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2562 Returntype : none
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2563 Exceptions : ????
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2564 Caller : general
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2565 Status : At risk
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2566
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2567 =cut
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2568
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2569 sub resolve_probe_data{
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2570 my $self = shift;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2571
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2572 $self->log("Resolving probe data", 1);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2573
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2574 warn "Probe cache resolution needs to accomodate probesets too!";
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2575
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2576 foreach my $array (@{$self->arrays()}) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2577 my $resolve = 0;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2578
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2579 if ($self->get_probe_cache_by_Array($array)) { #cache already generated
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2580
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2581 #check if we have any new unresolved array chips to add to the cache
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2582 foreach my $achip (@{$array->get_ArrayChips()}) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2583
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2584 if ($achip->has_status('RESOLVED')) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2585 $self->log("ArrayChip has RESOLVED status:\t".$achip->design_id()); #, 1);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2586 next;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2587 } else {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2588 $self->log("Found un-RESOLVED ArrayChip:\t".$achip->design_id());
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2589 $resolve = 1;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2590 last;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2591 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2592 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2593 } else { #no cache file
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2594 $resolve = 1;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2595 $self->log('No probe cache found for array '.$array->name());
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2596 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2597
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2598 if ($resolve) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2599 $self->log('Resolving array duplicates('.$array->name().') and rebuilding probe cache.', 1);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2600 $self->get_probe_cache_by_Array($array, 1); #get from DB
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2601
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2602 #we need ot make sure we mark cache as unresolved, so we don't use it by mistake.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2603
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2604
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2605
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2606 my ($line, $name, $pid, @pids);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2607 #my $index = 0;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2608 my $tmp_name = '';
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2609 my $tmp_id = '';
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2610
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2611 #miss the header
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2612
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2613 while ($line = $self->{'_probe_cache'}{$array->name}{'handle'}->getline()) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2614 ($name, $pid) = split/\t/o, $line;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2615
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2616 if ($name eq $tmp_name) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2617
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2618 if ($pid != $tmp_id) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2619 push @pids, $pid;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2620 #should reset to pid here if we have x y data else undef
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2621 #ignore this and force result to have x y
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2622 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2623
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2624 #can't do this naymore unless we figure out how to move the line pointer
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2625 #would still need to sed the file anyway, better to regen from DB?
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2626 #undef $self->{'_probe_cache'}{$array->name}{'entries'}->[$i];#delete true or to be resolved duplicate
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2627 } elsif ($name ne $tmp_name) { #new probe
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2628 $self->tidy_duplicates(\@pids) if(scalar(@pids) > 1);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2629 $tmp_name = $name;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2630 $tmp_id = $pid;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2631 @pids = ($pid);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2632 #$index = $i + 1;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2633 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2634 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2635
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2636 $self->tidy_duplicates(\@pids) if(scalar(@pids) > 1);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2637
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2638 #rename resovled cache and reset cache handle
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2639 my $cmd = 'mv '.$self->get_dir('caches').'/'.$array->name().'.probe_cache.unresolved '.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2640 $self->get_dir('caches').'/'.$array->name().'.probe_cache';
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2641
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2642 run_system_cmd($cmd);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2643 $self->get_probe_cache_by_Array($array); #This sets the caches
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2644
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2645
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2646 #warn "Only generate MD5 here, as this is guranteed to be correct";
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2647
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2648 foreach my $achip (@{$array->get_ArrayChips()}) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2649
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2650 if (! $achip->has_status('RESOLVED')) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2651 $self->log("Updating ArrayChip to RESOLVED status:\t".$achip->design_id());
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2652 $achip->adaptor->store_status('RESOLVED', $achip);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2653 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2654 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2655
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2656 $self->log('Finished building probe cache for '.$array->name(), 1);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2657 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2658 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2659
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2660 $self->log('Finished resolving probe data', 1);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2661
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2662 return;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2663 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2664
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2665
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2666 sub tidy_duplicates{
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2667 my ($self, $pids) = @_;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2668
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2669 my $pfa = $self->db->get_ProbeFeatureAdaptor();
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2670 my ($feature, %features);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2671
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2672 foreach my $dup_id (@$pids) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2673
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2674 foreach $feature(@{$pfa->fetch_all_by_Probe_id($dup_id)}) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2675 #can we safely assume end will be same too?
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2676 push @{$features{$feature->seq_region_name().':'.$feature->start()}}, $feature;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2677 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2678 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2679
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2680 my (@reassign_ids, @delete_ids);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2681
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2682 foreach my $seq_start_key (keys %features) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2683 my $reassign_features = 1;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2684
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2685 foreach $feature(@{$features{$seq_start_key}}) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2686
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2687 if ($feature->probe_id() == $pids->[0]) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2688 $reassign_features = 0;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2689 } else {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2690 push @delete_ids, $feature->dbID();
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2691 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2692 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2693
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2694 #This assumes that we actually have at least one element to every seq_start_key array
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2695 if ($reassign_features) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2696 my $new_fid = pop @delete_ids;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2697 push @reassign_ids, $new_fid;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2698 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2699 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2700
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2701 #resolve features first so we don't get any orphaned features if we crash.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2702 $pfa->reassign_features_to_probe(\@reassign_ids, $pids->[0]) if @reassign_ids;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2703 $pfa->delete_features(\@delete_ids) if @delete_ids;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2704
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2705 return;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2706 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2707
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2708 1;