annotate variant_effect_predictor/Bio/EnsEMBL/Funcgen/Parsers/MAGE.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 =head1 LICENSE
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
3 Copyright (c) 1999-2011 The European Bioinformatics Institute and
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
4 Genome Research Limited. All rights reserved.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
5
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
6 This software is distributed under a modified Apache license.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
7 For license details, please see
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
8
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
9 http://www.ensembl.org/info/about/code_licence.html
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
10
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
11 =head1 CONTACT
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
12
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
13 Please email comments or questions to the public Ensembl
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
14 developers list at <ensembl-dev@ebi.ac.uk>.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
15
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
16 Questions may also be sent to the Ensembl help desk at
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
17 <helpdesk@ensembl.org>.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
18
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
19 =head1 NAME
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
20
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
21 Bio::EnsEMBL::Funcgen::MAGE
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
22
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
23 =head1 SYNOPSIS
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
24
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
25 my $imp = Bio::EnsEMBL::Funcgen::Importer->new(%params);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
26 $imp->register_experiment();
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
27
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
28
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
29 =head1 DESCRIPTION
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
30
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
31 B<This program> is a base main class for all MAGE type array importers(e.g. Nimblegen).
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
32
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
33 =cut
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
34
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
35 ################################################################################
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
36
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
37 package Bio::EnsEMBL::Funcgen::Parsers::MAGE;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
38
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
39 use Bio::EnsEMBL::Funcgen::Utils::EFGUtils qw(get_date open_file run_system_cmd);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
40 use Bio::EnsEMBL::Utils::Exception qw( throw deprecate );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
41 use Bio::EnsEMBL::Utils::Argument qw( rearrange );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
42 use Bio::EnsEMBL::Funcgen::Utils::Helper;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
43 use Bio::MAGE::XMLUtils;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
44
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
45
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
46 use File::Path;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
47 use strict;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
48 use vars qw(@ISA);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
49 @ISA = qw(Bio::EnsEMBL::Funcgen::Utils::Helper);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
50
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
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
61 ReturnType : Bio::EnsEMBL::Funcgen::MAGE
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
62 Example : my $Exp = Bio::EnsEMBL::Nimblegen->new(%params);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
63 Exceptions : throws if mandatory params are not set or DB connect fails
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
64 Caller : General
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
65 Status : Medium - potential for %params names to change, remove %attrdata?
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
66
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
67 =cut
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
68
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
69 ################################################################################
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
70
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
71 sub new{
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
72 my ($caller) = shift;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
73 my $class = ref($caller) || $caller;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
74 my $self = $class->SUPER::new(@_);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
75
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
76 #This needs to be an Importer!
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
77 throw("This is base class for the experiment Bio::EnsEMBL::Funcgen::Parsers, needs to inherit from Bio::EnsEMBL::Funcgen::Importer") if(! $self->isa("Bio::EnsEMBL::Funcgen::Importer"));
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
78
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
79
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
80 #Are we not passing any Helper params?
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
81 #Log file etc is set in the run script
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
82
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
83 my ($write_mage, $no_mage, $vendor)
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
84 = rearrange(['WRITE_MAGE', 'NO_MAGE', 'VENDOR'], @_);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
85
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
86
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
87 #$self->{'update_xml'} = $update_xml || 0;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
88 $self->{'write_mage'} = $write_mage || 0;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
89 $self->{'no_mage'} = $no_mage || 0;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
90 $self->{'vendor'} = $vendor;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
91
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
92
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
93 if ($self->vendor ne 'NIMBLEGEN'){
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
94 $self->{'no_mage'} = 1;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
95 warn "Hardcoding no_mage for non-NIMBLEGEN imports";
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
96 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
97
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
98
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
99 if($self->{'no_mage'} && $self->{'write_mage'}){
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
100 throw('-no_mage and -write_mage options are mutually exclusive, please select just one');
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
101 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
102
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
103 return $self;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
104 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
105
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
106 =head2 process_experiment_config
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
107
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
108 Example : $self->init_experiment_import();
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
109 Description: Initialises import by creating working directories
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
110 and by storing the Experiemnt
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
111 Returntype : none
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
112 Exceptions : warns and throws depending on recover and Experiment status
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
113 Caller : general
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
114 Status : at risk - merge with register exeriment
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
115
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
116 =cut
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
117
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
118 #This is actually processing the tab2mage file & writing XML
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
119
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
120 sub process_experiment_config{
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
121 my $self = shift;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
122
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
123 #Here, this is where we need to call the a Parser from Importer to do this for only MAGE experiments
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
124 #validate_import?
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
125
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
126 #This is only used for the first test below.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
127 my $exp_adaptor = $self->db->get_ExperimentAdaptor();
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
128 my $xml = $exp_adaptor->fetch_mage_xml_by_experiment_name($self->name);# if $self->{'write_xml'};
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
129
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
130 #DO NOT CHANGE THIS LOGIC!
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
131 #write mage if we specify or we don't have a the final xml or the template
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
132 #recovery is turned on to stop exiting when previously stored chips are found from the 'write_mage' run.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
133 #This does mean that if you import without running the write_mage step
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
134 #you could potentially be overwriting someone elses experiment info
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
135 #No way of getting around this, need to make warning obvious, add to end of log!!!
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
136 #We always want to write and update xml and ResultSets if we're running the 2nd stage of the import
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
137 #Why would we ever want to skip the validate process?
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
138 #Leave for now as this is working as we want it
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
139 #But propose to remove skip functionality
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
140
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
141 if( ! $self->{'no_mage'}){
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
142
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
143 if($self->{'write_mage'} || !( -f $self->get_config('tab2mage_file') || $xml)){
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
144 $self->{'write_mage'} = 1;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
145 $self->backup_file($self->get_config('tab2mage_file'));
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
146 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
147 #elsif($xml && (! $self->{'update_xml'})){#Changed this so we always update
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
148 #elsif(! $self->{'update_xml'}){
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
149
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
150
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
151
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
152 #Here, we need to always update_xml
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
153 #If we are doing the 2nd stage
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
154 #Currently this is skipping as we haven't explicitly set it
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
155 #To remove this...
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
156 #what we need to do is check that we don't test for update_xml,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
157 # i.e. assuming that we're running the second stage of the import.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
158 # Therefore we need a boolean to set whether it is the first stage..else update_xml implicit
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
159 # write mage is explicit flag
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
160 # Or if we have not tab2mage file?
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
161 # we can then override this explicitly with update_xml?
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
162 # WE're never likely edit the xml directly, so we always want to validate and update
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
163 # so write mage flag become update_experiment? No this is no obvious behaviour
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
164 # We need to warn about removing the write_mage flag after we have updated it
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
165 # Otherwise we will never get to 2nd stage
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
166
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
167
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
168 #No mage is still valid as we may want to jus import and experiment
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
169 #Before receiving correct meta data
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
170 #When we can then rerun the import with -write_mage to update the resultsets
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
171
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
172 # $self->{'recover'} = 1;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
173 # $self->{'skip_validate'} = 1;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
174 #}
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
175 elsif( -f $self->get_config('tab2mage_file')){#Run Tab2Mage
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
176
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
177 $self->backup_file($self->get_config('mage_xml_file'));
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
178 my $cmd = 'tab2mage.pl -e '.$self->get_config('tab2mage_file').' -k -t '.$self->get_dir('output').
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
179 ' -c -d '.$self->get_dir('results');
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
180
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
181 $self->log('Reading tab2mage file');
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
182 my $t2m_exit_code = run_system_cmd($cmd, 1);#no exit flag due to non-zero exit codes
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
183 warn "tab2mage exit code is $t2m_exit_code";
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
184
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
185 if(! ($t2m_exit_code > -1) && ($t2m_exit_code <255)){
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
186 throw("tab2mage failed. Please check and correct:\t".$self->get_config('tab2mage_file')."\n...and try again");
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
187 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
188
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
189 $self->{'recover'} = 1;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
190 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
191 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
192
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
193 return;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
194 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
195
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
196 =heead init_tab2mage_export
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
197
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
198 Example : $self->init_tab2mage_export;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
199 Description: Writes the standard experiment section of the tab2mage file
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
200 Returntype : FileHandle
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
201 Exceptions : ???
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
202 Caller : general
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
203 Status : at risk
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
204
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
205 =cut
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
206
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
207 sub init_tab2mage_export{
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
208 my $self = shift;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
209
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
210 $self->backup_file($self->get_config('tab2mage_file')) if(-f $self->get_config('tab2mage_file'));
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
211
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
212 my $t2m_file = open_file($self->get_config('tab2mage_file'), '>');
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
213
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
214 #reformat this
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
215 my $exp_section = "experiment section\ndomain\t".(split/@/, $self->contact())[1]."\naccession\t\n".
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
216 "quality_control\tbiological_replicate\nexperiment_design_type\tbinding_site_identification\n".
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
217 "name\t".$self->name()."\nrelease_date\t\nsubmission_date\t\nsubmitter\t???\n".
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
218 "submitter_email\t???\ninvestigator\t???\ninvestigator_email\t???\norganization\t???\naddress\t".
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
219 "???\npublication_title\t\nauthors\t\njournal\t\nvolume\t\nissue\t\npages\t\nyear\t\npubmed_id\t\n";
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
220
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
221 my $protocol_section = "Protocol section\naccession\tname\ttext\tparameters\n";
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
222
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
223 foreach my $protocol(sort (keys %{$self->get_config('protocols')})){
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
224 $protocol_section .= $self->get_config('protocols')->{$protocol}->{'accession'}.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
225 "\t".$self->get_config('protocols')->{$protocol}->{'name'}.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
226 "\t".$self->get_config('protocols')->{$protocol}->{'text'}."\t";
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
227
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
228 $protocol_section .= (defined $self->get_config('protocols')->{$protocol}->{'parameters'}) ?
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
229 $self->get_config('protocols')->{$protocol}->{'parameters'}."\t\n" : "\t\n";
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
230 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
231
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
232 #File[raw] Array[accession] Array[serial] Protocol[grow] Protocol[treatment] Protocol[extraction] Protocol[labeling] Protocol[hybridization] Protocol[scanning] BioSource Sample Extract LabeledExtract Immunoprecipitate Hybridization BioSourceMaterial SampleMaterial ExtractMaterial LabeledExtractMaterial Dye BioMaterialCharacteristics[Organism] BioMaterialCharacteristics[BioSourceType] BioMaterialCharacteristics[StrainOrLine] BioMaterialCharacteristics[CellType] BioMaterialCharacteristics[Sex] FactorValue[StrainOrLine] FactorValue[Immunoprecipitate]
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
233
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
234
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
235 #Need to do this bit better?
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
236 #have array of fields. We can then populate a hash in the read method based on field names, then use the array to print in order
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
237
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
238 my $hyb_header = "\nHybridization section\n".join("\t", @{$self->hybridisation_fields()});
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
239
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
240 print $t2m_file $exp_section."\n".$protocol_section."\n".$hyb_header."\n";
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
241
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
242 return $t2m_file;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
243 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
244
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
245
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
246 #Move to MAGE package?
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
247
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
248 sub hybridisation_fields{
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
249 my $self = shift;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
250
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
251 return ['File[raw]', 'Array[accession]', 'Array[serial]',
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
252 (map 'Protocol['.$_.']', (sort (keys %{$self->get_config('protocols')}))),
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
253 'BioSource', 'Sample', 'Extract', 'LabeledExtract', 'Immunoprecipitate', 'Hybridization',
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
254 'BioSourceMaterial', 'SampleMaterial', 'ExtractMaterial', 'LabeledExtractMaterial',
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
255 'Dye', 'BioMaterialCharacteristics[Organism]', 'BioMaterialCharacteristics[BioSourceType]',
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
256 'BioMaterialCharacteristics[StrainOrLine]', 'BioMaterialCharacteristics[CellType]',
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
257 'BioMaterialCharacteristics[Sex]', 'FactorValue[StrainOrLine]', 'FactorValue[Immunoprecipitate]'];
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
258 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
259
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
260
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
261
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
262 #=head2 register_experiment
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
263 #
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
264 # Example : $imp->register_experiment()
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
265 # Description: General control method, performs all data import and normalisations
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
266 # Arg [1] : optional - dnadb DBAdaptor
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
267 # Returntype : none
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
268 # Exceptions : throws if arg is not Bio::EnsEMBL::DBSQL::DBAdaptor
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
269 # Caller : general
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
270 # Status : Medium
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
271 #
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
272 #=cut
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
273
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
274 #write/validate_mage
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
275
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
276 sub write_validate_experiment_config{
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
277 my $self = shift;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
278
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
279
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
280 if($self->{'write_mage'} || $self->{'no_mage'}){
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
281 $self->read_data("array");
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
282
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
283 if(! $self->{'no_mage'}){
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
284 $self->log("PLEASE CHECK AND EDIT AUTOGENERATED TAB2MAGE FILE:\t".$self->get_config('tab2mage_file'));
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
285 #we could make this print only if it was set by the user, not by the Importer
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
286 $self->log('REMEMBER TO REMOVE -write_mage FLAG BEFORE UPDATING');
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
287 exit;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
288 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
289 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
290 elsif(! $self->{'no_mage'}){#This should be a no_channel flag, set dependent on import mode(gff_chip, gff_chan)
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
291 #Need to accomodate chip level imports in validate?
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
292
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
293 if (! $self->{'skip_validate'}){
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
294
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
295 $self->log("Validating mage file:\t".$self->get_config('mage_xml_file'));
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
296
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
297
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
298 #Updating ResultSets:
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
299 #Given that we might want to add a chip to an experiment we will also need to update the tab2MAGE
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
300 #mage_xml and ResultSets accordingly.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
301
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
302 #This should happen if we specify update_xml
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
303 #Should recovery also always force update?
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
304 #Considering the two run modes, write tab2mage & validate and import
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
305 #There is a subtle difference between recovery and update mage_xml
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
306 #Do we always run in recovery mode for the validate&import step?
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
307 #Yes we do, so can't guarantee the this means we want to update.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
308 #So we need to change update_xml to update to reflect the changed functionality on ResultSets
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
309
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
310 #If we run an update without on then chips will be loaded but xml and ResultSets will not be altered :(
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
311 #If we're running the 2nd stage we should always be updating the xml anyway!!!!
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
312 #As there is no reason to rerun the validate & import step without it.(unless we're debugging maybe)
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
313 #So why should we ever run without it?
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
314
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
315 #To update ResultSets we validate as normal and then update where appropriate
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
316 #What has precedence? Replicate name?
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
317 #Update echip types as appropriate
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
318 #What if this invalidates original rsets?
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
319 #Then list sets not covered for removal by script?
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
320
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
321
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
322
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
323 my (%echips, @log);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
324 my $rset_adaptor = $self->db->get_ResultSetAdaptor;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
325 my $chan_anal = $self->db->get_AnalysisAdaptor->fetch_by_logic_name('RawValue');
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
326
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
327 #need to change this to default analysis
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
328 #There we issues with setting VSN_GLOG as an env var
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
329 #as this is tested for and the norm was skipped for some reason?
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
330 my $chip_anal = $self->db->get_AnalysisAdaptor->fetch_by_logic_name($self->norm_method());
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
331
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
332 #Try import sets like this first, so we know ther is new data
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
333 my $chan_rset = $self->get_import_ResultSet($chan_anal, 'channel');
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
334 my $rset = $self->get_import_ResultSet($chip_anal, 'experimental_chip');
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
335
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
336
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
337 #Else get them anyway and log
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
338 if(! $rset){
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
339
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
340 if($chan_rset){
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
341 $self->log('Identified partial Channel only import, updating MAGE-XML');
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
342 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
343 else{
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
344 ($chan_rset) = @{$rset_adaptor->fetch_all_by_name_Analysis($self->experiment->name.'_IMPORT', $chan_anal)};
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
345 #Don't need to test for >1 here as this has already been done in get_import_ResultSet
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
346 $self->log('All ExperimentalChips imported, updating MAGE-XML only');
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
347 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
348
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
349 ($rset) = @{$rset_adaptor->fetch_all_by_name_Analysis($self->experiment->name.'_IMPORT', $chip_anal)};
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
350 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
351
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
352
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
353 #This will never happen now due to the change tab2mage rules in init_experiment
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
354 #Remove?
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
355 if(! $rset){
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
356 throw('Cannot find ResultSet, are you trying to import a new experiment which already has a tab2mage file present? Try removing the file, or specifying the -write_mage flag to parse_and_import.pl');
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
357 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
358
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
359 if(! -l $self->get_dir('output').'/MAGE-ML.dtd'){
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
360 system('ln -s '.$ENV{'EFG_DATA'}.'/MAGE-ML.dtd '.$self->get_dir('output').'/MAGE-ML.dtd') == 0 ||
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
361 throw('Failed to link MAGE-ML.dtd');
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
362 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
363
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
364
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
365 $self->log('VALIDATING MAGE XML');
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
366 my $reader = Bio::MAGE::XML::Reader->new();
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
367 my $mage_xml ||= $self->get_config('mage_xml_file');
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
368 $self->{'mage'} = $reader->read($mage_xml);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
369
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
370 #this should only ever return 1 for an import
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
371 foreach my $mage_exp(@{$self->{'mage'}->getExperiment_package->getExperiment_list()}){
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
372
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
373 if($mage_exp->getName() ne $self->name()){
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
374 $self->log('MAGE experiment name ('.$mage_exp->getName().') does not match import name ('.$self->name().')');
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
375 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
376
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
377 #add more experiment level validation here?
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
378
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
379 foreach my $assay (@{$mage_exp->getBioAssays()}){
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
380
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
381 if($assay->isa('Bio::MAGE::BioAssay::PhysicalBioAssay')){#channel
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
382 $self->log('Validating PhysicalBioAssay "'.$assay->getName()."'\n");#hyb name(this is the file name for measured assays
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
383
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
384 my $bioassc = $assay->getBioAssayCreation();#This is a Hybridisation
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
385 my $array = $bioassc->getArray();#this is an ArrayChip
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
386 my $design_id = $array->getArrayDesign->getIdentifier();
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
387 my $chip_uid = $array->getArrayIdentifier();
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
388
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
389
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
390 foreach my $echip(@{$rset->get_ExperimentalChips()}){
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
391
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
392
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
393 if($echip->unique_id() eq $chip_uid){
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
394 $self->log("Found ExperimentalChip:\t".$chip_uid);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
395
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
396 if(! exists $echips{$chip_uid}){
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
397 $echips{$chip_uid} = {(
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
398 total_biorep => undef,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
399 total_biotechrep => undef,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
400 experimental_biorep => undef,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
401 experimental_biotechrep => undef,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
402 total_dye => undef,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
403 experimental_dye => undef,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
404 cell_type => undef,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
405 feature_type => undef,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
406 )};
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
407 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
408
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
409 #Validate ArrayChip
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
410 my ($achip) = @{$self->db->get_ArrayChipAdaptor->fetch_all_by_ExperimentalChips([$echip])};
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
411
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
412 if($achip->design_id() ne $design_id){
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
413 push @log, "ArrayDesign Identifier (${design_id}) does not match ArrayChip design ID (".
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
414 $achip->design_id().")\n\tSkipping channel and replicate validation";
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
415 #skip the channel/replicate validation here?
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
416 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
417 else { #validate channels and replicate names
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
418
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
419 foreach my $src_biomat (@{$bioassc->getSourceBioMaterialMeasurements()}) { #Channel materials(X1)?
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
420 my $biomat = $src_biomat->getBioMaterial(); #LabelledExtract (IP/Control)
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
421 #we could sub this passing $echip and biomat?
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
422 #messy to pass regexs and populate correct echip hash attrs
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
423 #also messy to populate log
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
424 #keeping nested loop also prevents further obfuscation
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
425 #do we need to do all the defined checks, or maybe just the first one?
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
426 #Then we can skip all following warning?
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
427
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
428 foreach my $treat (@{$biomat->getTreatments()}) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
429 #As there is effectively one more level of material extraction for the IP channel
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
430 #this loop will returns materials an iteration out of sync for each channel
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
431
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
432 foreach my $ssrc_biomat (@{$treat->getSourceBioMaterialMeasurements()}) { #Channel measurement(x1)
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
433 my $sbiomat = $ssrc_biomat->getBioMaterial();
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
434 #This will either be techrep name for control of IP name for experimental channel
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
435 #SOM0035_BR1_TR2 IP #Immunoprecicpitate
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
436 #SOM0035_BR1_TR2 #Extract
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
437
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
438 if ($sbiomat->getName() =~ /BR[0-9]+_TR[0-9]+$/o) { #Total
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
439
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
440 if (! defined $echips{$chip_uid}{'total_biotechrep'}) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
441 $echips{$chip_uid}{'total_biotechrep'} = $sbiomat->getName();
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
442 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
443 else{
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
444 push @log, "Found two TOTAL Channels on same chip with biotechreps:\t".$sbiomat->getName().
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
445 " and ".$echips{$chip_uid}{'total_biotechrep'};
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
446 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
447 }else{#Experimental
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
448
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
449 #get feature type from assay
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
450 my $fv_ref = $assay->getBioAssayFactorValues();
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
451 if(! defined $fv_ref){
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
452 throw('No FactorValues found, you must populate the "Immunoprecipitate" field. Maybe you forgot to specify -feature_type?');
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
453 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
454
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
455 my ($feature_type);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
456
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
457 foreach my $fvalue(@{$fv_ref}){
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
458
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
459 if($fvalue->getValue()->getCategory() eq 'Immunoprecipitate'){
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
460 $feature_type = $fvalue->getName();
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
461 $feature_type =~ s/anti\s*-\s*//;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
462 $feature_type =~ s/\s*antibody\s*//;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
463 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
464 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
465 $echips{$chip_uid}{'feature_type'} = $feature_type;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
466 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
467
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
468 foreach my $ttreat (@{$sbiomat->getTreatments()}) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
469
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
470 foreach my $tsrc_biomat (@{$ttreat->getSourceBioMaterialMeasurements()}) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
471 my $tbiomat = $tsrc_biomat->getBioMaterial();
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
472 #SOM0035_BR1_TR2 #Extract (exp)
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
473 #SOM0035_BR1 #Sample (total)
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
474
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
475 if ($tbiomat->getName() =~ /BR[0-9]+_TR[0-9]+$/o) { #experimental
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
476
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
477 if (! defined $echips{$chip_uid}{'experimental_biotechrep'}) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
478 $echips{$chip_uid}{'experimental_biotechrep'} = $tbiomat->getName();
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
479 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
480 else{
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
481 push @log, "Found two EXPERIMENTAL Channels on same chip with biotechreps:\t".$tbiomat->getName().
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
482 " and ".$echips{$chip_uid}{'experimental_biotechrep'};
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
483 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
484
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
485 my $dye = $biomat->getLabels()->[0]->getName();
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
486
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
487 foreach my $chan (@{$echip->get_Channels()}) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
488
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
489 if ($chan->type() eq 'EXPERIMENTAL') {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
490
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
491 if (uc($dye) ne uc($chan->dye())) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
492 push @log, "EXPERIMENTAL channel dye mismatch:\tMAGE = ".uc($dye).' vs DB '.uc($chan->dye);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
493 } else {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
494 $echips{$chip_uid}{'experimental_dye'} = uc($dye);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
495 }
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 else { #control
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
500
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
501 if (! defined $echips{$chip_uid}{'total_biorep'}) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
502 $echips{$chip_uid}{'total_biorep'} = $tbiomat->getName();
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
503 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
504 else{
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
505 push @log, "Found two TOTAL Channels on same chip with biotechreps:\t".$tbiomat->getName().
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
506 " and ".$echips{$chip_uid}{'total_biorep'};
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
507 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
508
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
509 my $dye = $biomat->getLabels()->[0]->getName();
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
510
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
511 foreach my $chan (@{$echip->get_Channels()}) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
512
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
513 if ($chan->type() eq 'TOTAL') {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
514
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
515 if (uc($dye) ne uc($chan->dye())) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
516 push @log, "TOTAL channel dye mismatch:\tMAGE = ".uc($dye).' vs DB '.uc($chan->dye);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
517 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
518 else {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
519 $echips{$chip_uid}{'total_dye'} = uc($dye);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
520 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
521 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
522 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
523 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
524 #could do one more iteration and get Source and FeatureType?
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
525 #we should really extend this, and then update the EC cell_type and feature_types
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
526 #these features might not be biotmats tho...need to check
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
527
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
528
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
529 foreach my $ftreat (@{$tbiomat->getTreatments()}) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
530
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
531 foreach my $fsrc_biomat (@{$ftreat->getSourceBioMaterialMeasurements()}) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
532 my $fbiomat = $fsrc_biomat->getBioMaterial();
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
533 #EXPERIMENTAL - biorep
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
534 #TOTAL - source/cell type
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
535 my $cell_type;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
536
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
537 if($fbiomat->getName() =~ /BR[0-9]+$/o){#EXPERIMETNAL
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
538
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
539 if(! defined $echips{$chip_uid}{'experimental_biorep'}){
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
540 $echips{$chip_uid}{'experimental_biorep'} = $fbiomat->getName();
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
541 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
542 else{
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
543 push @log, "Found two Experimental Channels on same chip with bioreps:\t".$fbiomat->getName().
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
544 " and ".$echips{$chip_uid}{'experimental_biorep'};
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
545 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
546
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
547
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
548 #last treatment/measurement/biomat level should go here
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
549 #as TOTAL channel does not have another level and will fail
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
550 foreach my $xtreat (@{$fbiomat->getTreatments()}) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
551
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
552 foreach my $xsrc_biomat (@{$xtreat->getSourceBioMaterialMeasurements()}) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
553 my $xbiomat = $xsrc_biomat->getBioMaterial();
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
554
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
555 foreach my $char(@{$xbiomat->getCharacteristics()}){
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
556 $cell_type = $char->getValue() if($char->getCategory() eq 'CellType');
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
557 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
558 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
559 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
560
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
561 }else{#this should be BioSource
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
562 #which should have CellType as characteristic
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
563 #we could change tab2mage and have this as a factor value,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
564 #but don't want to start messing with "standard" format
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
565
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
566 foreach my $char(@{$fbiomat->getCharacteristics()}){
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
567 $cell_type = $char->getValue() if($char->getCategory() eq 'CellType');
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
568 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
569 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
570
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
571 #can have cell_type validation here
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
572 if(! defined $echips{$chip_uid}{'cell_type'}){
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
573 $echips{$chip_uid}{'cell_type'} = $cell_type;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
574 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
575 elsif( $echips{$chip_uid}{'cell_type'} ne $cell_type){
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
576 push @log, "Found Channels on same chip (${chip_uid}) with different cell types:\t".
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
577 $cell_type." and ".$echips{$chip_uid}{'cell_type'};
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
578 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
579 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
580 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
581 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
582 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
583 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
584 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
585 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
586 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
587 } #end of echip
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
588 } #end of foreach echip
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
589 } #end of physbioassay
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
590 } #end of foreach assay
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
591 } #end of foreach exp
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
592
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
593
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
594
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
595 #we should fail here with log before we update the result sets
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
596
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
597 #we need to build rep names
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
598 #we're currently using sample labels, in the tab2mage file
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
599 #altho' previous sets have been using exp name
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
600 #these have been manually patched afterwards
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
601
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
602 #More desirable to have exp name as rset name, but no way of doing BR validation
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
603 #based on sample label, if we don't have it in the tab2mage
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
604 #if we change it in the DB then we need to update the tab2mage
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
605
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
606 #no way to do this when generating tab2mage as the user hasn't yet defined the reps
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
607 #we could just make reps based on sample labels
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
608 #then we just assume that alterations made by the user are correct
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
609 #as we can no longer validate using sample labels
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
610 #can still validate using cell/feature type
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
611
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
612 #no longer need vendor specific validation as this will be done in tab2mage generation
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
613
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
614
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
615 #We need to validate reps here
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
616 #then update ec records as appropriate and then create rsets
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
617
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
618 my (%bio_reps, %tech_reps);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
619 my $ct_adaptor = $self->db->get_CellTypeAdaptor();
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
620 my $ft_adaptor = $self->db->get_FeatureTypeAdaptor();
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
621
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
622 #select rs.*, ec.*, c.* from result_set rs, chip_channel cc, channel c, experimental_chip ec where rs.result_set_id=cc.result_set_id and cc.table_name='experimental_chip' and cc.table_id=ec.experimental_chip_id and cc.table_id=c.experimental_chip_id order by name;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
623
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
624 foreach my $echip (@{$rset->get_ExperimentalChips()}) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
625
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
626 my ($biorep, $biotechrep);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
627
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
628 if (! exists $echips{$echip->unique_id()}) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
629 push @log, "No MAGE entry found for ExperimentalChip:\t".$echip->unique_id();
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
630 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
631 else {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
632
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
633 foreach my $chan_type('total', 'experimental'){
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
634
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
635 $biorep = $echips{$echip->unique_id()}{$chan_type.'_biorep'};
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
636 $biotechrep = $echips{$echip->unique_id()}{$chan_type.'_biotechrep'};
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
637
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
638 if (! defined $biotechrep) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
639 push @log, 'ExperimentalChip('.$echip->unique_id().') Extract field do not meet naming convention(SAMPLE_BRN_TRN)';
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
640 } #! defined biorep? will never occur at present
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
641 elsif ($biotechrep !~ /\Q$biorep\E/) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
642 push @log, "Found Extract(techrep) vs Sample(biorep) naming mismatch\t${biotechrep}\tvs\t$biorep";
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
643 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
644
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
645 if ( ! $echips{$echip->unique_id()}{$chan_type.'_dye'}) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
646 push @log, "No ".uc($chan_type)." channel found for ExperimentalChip:\t".$echip->unique_id();
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
647 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
648
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
649 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
650
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
651 #Is this is really implicit in the test above
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
652 if($echips{$echip->unique_id()}{'experimental_biorep'} ne $echips{$echip->unique_id()}{'total_biorep'}){
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
653 push @log, "Found biorep mismatch between channels of ExperimentalChip ".$echip->unique_id().":\n".
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
654 "\tEXPERIMENTAL\t".$echips{$echip->unique_id()}{'experimental_biorep'}."\tTOTAL\t".
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
655 $echips{$echip->unique_id()}{'total_biorep'};
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
656 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
657
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
658 #Is this is really implicit in the test above
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
659 if($echips{$echip->unique_id()}{'experimental_biotechrep'} ne $echips{$echip->unique_id()}{'total_biotechrep'}){
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
660 push @log, "Found biotechrep mismatch between channels of ExperimentalChip ".$echip->unique_id().":\n".
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
661 "\tEXPERIMENTAL\t".$echips{$echip->unique_id()}{'experimental_biotechrep'}."\tTOTAL\t".
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
662 $echips{$echip->unique_id()}{'total_biotechrep'};
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
663 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
664
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
665
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
666 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
667
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
668
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
669 #Now we need to validate ec has same feature/cell type as other ecs in this br
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
670 #this does not handle import sets which ARE allowed to have same name but different types
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
671
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
672 #warn "Processing ".$echip->unique_id()." $biorep $biotechrep";
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
673
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
674
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
675 if(exists $bio_reps{$biorep}){
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
676
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
677
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
678 if(! defined $bio_reps{$biorep}{'cell_type'}){
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
679 push @log, "Found undefined CellType for biorep $biorep";
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
680 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
681 elsif($bio_reps{$biorep}{'cell_type'}->name() ne $echips{$echip->unique_id()}{'cell_type'}){
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
682 push @log, "Found CellType mismatch between $biorep and ExperimentalChip ".$echip->unique_id();
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
683 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
684
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
685
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
686 if(! defined $bio_reps{$biorep}{'feature_type'}){
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
687 push @log, "Found undefined FeatureType for biorep $biorep";
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
688 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
689 elsif($bio_reps{$biorep}{'feature_type'}->name() ne $echips{$echip->unique_id()}{'feature_type'}){
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
690 push @log, "Found FeatureType mismatch between $biorep and ExperimentalChip ".$echip->unique_id();
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
691 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
692
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
693 #warn "$biorep exists with\t".$bio_reps{$biorep}{'cell_type'}->name().' '.$bio_reps{$biorep}{'feature_type'}->name();
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
694
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
695 #We need to set the tech rep here too!
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
696 #Do we need to validate this also, as above.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
697 #This would be overkill due to the inherant nature of the TR to BR relationship
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
698
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
699 if(! exists $tech_reps{$biotechrep}){
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
700 $tech_reps{$biotechrep}{'cell_type'} = $bio_reps{$biorep}{'cell_type'};
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
701 $tech_reps{$biotechrep}{'feature_type'} = $bio_reps{$biorep}{'feature_type'};
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
702 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
703
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
704
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
705 }else{
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
706
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
707 #warn "Creating new BR $biorep and TR $biotechrep";
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
708
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
709 if(defined $echips{$echip->unique_id()}{'cell_type'}){
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
710
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
711 my $cell_type = $ct_adaptor->fetch_by_name($echips{$echip->unique_id()}{'cell_type'});
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
712
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
713 if(! defined $cell_type){
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
714 push @log, 'CellType '.$echips{$echip->unique_id()}{'cell_type'}.' does not exist in the database, please use the import_type.pl script';
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
715 }else{
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
716 $bio_reps{$biorep}{'cell_type'} = $cell_type;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
717 $tech_reps{$biotechrep}{'cell_type'} = $cell_type;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
718 # warn "Setting ".$echip->unique_id()." $biorep $biotechrep ".$cell_type->name;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
719 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
720 }else{
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
721 warn "No CellType specified for ExperimentalChip:\t".$echip->unique_id()."\n";
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
722 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
723
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
724
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
725 if(defined $echips{$echip->unique_id()}{'feature_type'}){
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
726 my $feature_type = $ft_adaptor->fetch_by_name($echips{$echip->unique_id()}{'feature_type'});
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
727
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
728 if(! defined $feature_type){
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
729 push @log, 'FeatureType '.$echips{$echip->unique_id()}{'feature_type'}.' does not exist in the database, please use the import_type.pl script';
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
730 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
731 else{
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
732 $bio_reps{$biorep}{'feature_type'} = $feature_type;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
733 $tech_reps{$biotechrep}{'feature_type'} = $feature_type;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
734
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
735 #warn "Setting ".$echip->unique_id()." $biorep $biotechrep ".$feature_type->name;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
736 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
737 }else{
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
738 warn "No FeatureType specified for ExperimentalChip:\t".$echip->unique_id()."\n";
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
739 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
740 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
741
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
742 push @{$tech_reps{$biotechrep}{'echips'}}, $echip->unique_id();
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
743 push @{$bio_reps{$biorep}{'echips'}}, $echip->unique_id();
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
744 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
745
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
746
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
747
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
748
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
749 if (@log) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
750 $self->log("MAGE VALIDATION REPORT\n::\t".join("\n::\t", @log));
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
751 throw("MAGE VALIDATION FAILED\nPlease correct tab2mage file and try again:\t".$self->get_config('tab2mage_file'));
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
752 } else {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
753 $self->log('MAGE VALDIATION SUCCEEDED');
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
754 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
755
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
756
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
757 #we also need to build the tech rep results sets(not displayable)
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
758 #do we need to have result sets for each biorep too?
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
759 #update ExperimentalChip replicate info
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
760 my (%rsets);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
761 my %types = (
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
762 feature => {},
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
763 cell => {},
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
764 );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
765
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
766
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
767
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
768 #This needs to update and split the import/top level sets so they are of same types
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
769 #update ec type here as we have ec context
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
770 #careful not to update multiple times, just once for each ec
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
771
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
772 my $eca = $self->db->get_ExperimentalChipAdaptor();
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
773
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
774
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
775 foreach my $echip (@{$rset->get_ExperimentalChips()}) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
776 my ($cell_type, $feature_type);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
777
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
778 #Set biorep info and rset
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
779 foreach my $biorep (keys %bio_reps){
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
780
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
781 foreach my $chip_uid(@{$bio_reps{$biorep}{'echips'}}){
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
782
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
783 if($chip_uid eq $echip->unique_id()){
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
784 $echip->biological_replicate($biorep);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
785 $cell_type = $bio_reps{$biorep}{'cell_type'};
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
786 $feature_type = $bio_reps{$biorep}{'feature_type'};
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
787
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
788 if(! defined $rsets{$biorep}){
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
789
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
790 $rsets{$biorep} = Bio::EnsEMBL::Funcgen::ResultSet->new
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
791 (
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
792 -NAME => $biorep,#this may not be unique, prepend with exp name? Force method to use Experiment_and_name?
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
793 -ANALYSIS => $rset->analysis(),
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
794 -TABLE_NAME => 'experimental_chip',
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
795 -FEATURE_TYPE => $feature_type,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
796 -CELL_TYPE => $cell_type,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
797 );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
798
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
799 #record cell and feature types
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
800 $types{'feature'}{$feature_type->name()} = $feature_type;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
801 $types{'cell'}{$cell_type->name()} = $cell_type;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
802 $self->log("Created BioRep ResultSet:\t".$rsets{$biorep}->log_label);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
803 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
804
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
805 $rsets{$biorep}->add_table_id($echip->dbID(), $rset->get_chip_channel_id($echip->dbID()));
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
806 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
807 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
808 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
809
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
810 #reset echip types
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
811 $echip->feature_type($feature_type);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
812 $echip->cell_type($cell_type);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
813
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
814
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
815 #set tech rep info and rset
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
816 foreach my $techrep(keys %tech_reps){
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
817
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
818 foreach my $chip_uid(@{$tech_reps{$techrep}{'echips'}}){
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
819
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
820 if($chip_uid eq $echip->unique_id()){
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
821 $echip->technical_replicate($techrep);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
822
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
823 if(! defined $rsets{$techrep}){
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
824 $rsets{$techrep} = Bio::EnsEMBL::Funcgen::ResultSet->new
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
825 (
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
826 -NAME => $techrep,#this may not be unique, prepend with exp name? Force method to use Experiment_and_name?
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
827 -ANALYSIS => $rset->analysis(),
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
828 -TABLE_NAME => 'experimental_chip',
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
829 -FEATURE_TYPE => $tech_reps{$techrep}{'feature_type'},
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
830 -CELL_TYPE => $tech_reps{$techrep}{'cell_type'},
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
831 );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
832
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
833 $self->log("Created TechRep ResultSet:\t".$rsets{$techrep}->log_label);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
834 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
835 $rsets{$techrep}->add_table_id($echip->dbID(), $rset->get_chip_channel_id($echip->dbID()));
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
836 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
837 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
838 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
839
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
840 $echip->adaptor->update_replicate_types($echip);#store rep info
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
841 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
842
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
843
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
844 ### Reset/Update/Clean import sets type fields
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
845 my $sql;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
846
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
847 if(scalar keys %{$types{'feature'}} >1){
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
848 $self->log('Resetting IMPORT FeatureType to NULL for multi-FeatureType Experiment');
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
849 $sql = "UPDATE result_set set feature_type_id='NULL' where result_set_id in (".$rset->dbID().', '.$chan_rset->dbID().')';
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
850
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
851 }else{
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
852 my ($ftype) = values %{$types{'feature'}};
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
853
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
854 if(! defined $rset->feature_type()){
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
855 $self->log('Updating IMPORT FeatureType to '.$ftype->name());
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
856 $sql = "UPDATE result_set set feature_type_id=".$ftype->dbID()." where result_set_id in (".$rset->dbID().', '.$chan_rset->dbID().')';
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
857 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
858 elsif($rset->feature_type->dbID ne $ftype->dbID()){
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
859 $self->log('WARNING: FeatureType mismatch. Updating IMPORT FeatureType('.$rset->feature_type->name().') to match meta('.$ftype->name.')');
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
860 $sql = "UPDATE result_set set feature_type_id=".$ftype->dbID()." where result_set_id in (".$rset->dbID().', '.$chan_rset->dbID().')';
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
861
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
862 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
863 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
864
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
865 $self->db->dbc->do($sql) if $sql;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
866
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
867 undef $sql;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
868
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
869 if(scalar keys %{$types{'cell'}} >1){
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
870 $self->log('Resetting IMPORT CellType to NULL for multi-CellType Experiment');
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
871 my $sql = "UPDATE result_set set cell_type_id='NULL' where result_set_id in (".$rset->dbID().', '.$chan_rset->dbID().')';
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
872 }else{
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
873 my ($ctype) = values %{$types{'cell'}};
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
874
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
875 if(! defined $rset->cell_type()){
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
876 $self->log('Updating IMPORT CellType to '.$ctype->name());
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
877 $sql = "UPDATE result_set set cell_type_id=".$ctype->dbID()." where result_set_id in (".$rset->dbID().', '.$chan_rset->dbID().')';
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
878 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
879 elsif($rset->cell_type->dbID ne $ctype->dbID()){
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
880 $self->log('WARNING: CellType mismatch. Updating IMPORT CellType('.$rset->cell_type->name().') to match meta('.$ctype->name.')');
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
881 $sql = "UPDATE result_set set cell_type_id=".$ctype->dbID()." where result_set_id in (".$rset->dbID().', '.$chan_rset->dbID().')';
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
882 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
883 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
884
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
885 $self->db->dbc->do($sql) if $sql;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
886
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
887 ### Generate new top level sets here based on br type combos
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
888 #we risk duplicating sets here if import set is set to one cell/featuretype
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
889 #duplicate anyway, as import is really just for easy tracking of all chips during import
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
890
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
891 my %toplevel_sets;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
892 my $toplevel_cnt = 1;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
893 #could tidy up toplevel_sets implmentation
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
894
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
895 foreach my $new_rset(values %rsets){
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
896
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
897 my $ftype_name = (defined $new_rset->{'feature_type'}) ? $new_rset->{'feature_type'}->name() : undef;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
898 my $ctype_name = (defined $new_rset->{'cell_type'}) ? $new_rset->{'cell_type'}->name() : undef;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
899
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
900 if(! exists $toplevel_sets{$ftype_name}){
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
901 $toplevel_sets{$ftype_name} = {};
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
902 $toplevel_sets{$ftype_name}{'feature_type'} = $new_rset->{'feature_type'};
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
903 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
904
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
905
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
906
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
907 if(! exists $toplevel_sets{$ftype_name}{$ctype_name}){
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
908 $toplevel_sets{$ftype_name}{$ctype_name}{'cell_type'} = $new_rset->{'cell_type'};
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
909 $toplevel_sets{$ftype_name}{$ctype_name}{'rsets'} = [$new_rset];
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
910 }else{
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
911 push @{$toplevel_sets{$ftype_name}{$ctype_name}{'rsets'}}, $new_rset;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
912 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
913 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
914
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
915
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
916
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
917 #build toplevel sets for each feature/cell type combo using constituent rsets
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
918 foreach my $ftype_name(keys %toplevel_sets){
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
919
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
920 foreach my $ctype_name(keys %{$toplevel_sets{$ftype_name}}){
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
921
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
922 next if $ctype_name eq 'feature_type';#skip feature type
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
923
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
924 #we need to give these a different key so we're not overwriting in the rset hash
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
925 $rsets{$self->experiment->name().'_'.$toplevel_cnt} = Bio::EnsEMBL::Funcgen::ResultSet->new
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
926 (
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
927 -NAME => $self->experiment->name(),
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
928 -ANALYSIS => $rset->analysis(),
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
929 -TABLE_NAME => 'experimental_chip',
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
930 -FEATURE_TYPE => $toplevel_sets{$ftype_name}{'feature_type'},
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
931 -CELL_TYPE => $toplevel_sets{$ftype_name}{$ctype_name}{'cell_type'},
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
932 );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
933
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
934 $self->log("Created toplevel ResultSet for:\t". $rsets{$self->experiment->name().'_'.$toplevel_cnt}->log_label);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
935
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
936 #add consituent table ids
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
937 foreach my $new_rset(@{$toplevel_sets{$ftype_name}{$ctype_name}{'rsets'}}){
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
938
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
939 foreach my $ec_id(@{$new_rset->table_ids()}){
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
940
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
941 #Only add it if it has not already been added
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
942 if(! $rsets{$self->experiment->name().'_'.$toplevel_cnt}->get_chip_channel_id($ec_id)){
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
943 $rsets{$self->experiment->name().'_'.$toplevel_cnt}->add_table_id($ec_id, $new_rset->get_chip_channel_id($ec_id));
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
944 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
945 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
946 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
947 $toplevel_cnt++;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
948 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
949 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
950
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
951 #ResultSet update strategy
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
952 #To avoid messyness in resolving result_set differences
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
953 #Simply delete all that are not used as supporting sets
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
954 #and load new ones, log old supporting rsets for manual
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
955 #reassignment and rollback.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
956 #If we have clash between an old set and a new set, rename old
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
957 #set and log
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
958 #We might not always have the previous data files.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
959 #But we might want to maintain all the previous rsets and just add a new one
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
960 #At present this would require acquiring the previous Tab2Mage file
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
961 #and adding the new data to it.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
962 #We could do with a way to merge data already in the DB with new meta data to form a new Tab2Mage file
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
963 #and validate that
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
964
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
965
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
966 my @previous_rep_sets;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
967 my @supporting_rset_dsets;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
968
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
969
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
970 #Get non-import Sets
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
971 map {push @previous_rep_sets, $_ if $_->name !~ /_IMPORT$/}
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
972 @{$rset_adaptor->fetch_all_by_Experiment_Analysis($self->experiment, $chip_anal)};
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
973
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
974
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
975 #rollback_ResultSet if possible?
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
976 #This is just checking if they are supporting, not actually rolling them back
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
977 if(@previous_rep_sets){
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
978 $self->log('Found previously stored ResultSets');
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
979
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
980 foreach my $prev_rset(@previous_rep_sets){
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
981 #This should not rollback anything, just return skipped sets
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
982 #i.e. sets which have a product feature set
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
983 #It also used to delete the supporting set records which maybe important for redefining the DataSet below
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
984 my $rset_dset = $self->rollback_ResultSet($prev_rset);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
985 push @supporting_rset_dsets, $rset_dset if @$rset_dset;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
986 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
987 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
988
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
989 #Note: If we remove chips from an experiment, they are only removed from the non-import sets
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
990 #To fully remove them, you need to use the rollback_experiment.pl script with -chip_ids
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
991 #can we log this in get_import_ResultSet?
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
992
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
993 $self->log('Storing ResultSets');
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
994
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
995 #Store new tech, biol and toplevel type rsets
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
996 foreach my $new_rset(values %rsets){
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
997 my $replace_txt;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
998
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
999 #Rename old set if we have a name/anal/type clash
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1000 foreach my $prs(@supporting_rset_dsets){
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1001
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1002 my ($pset, $dset) = @$prs;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1003
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1004 if($pset->log_label eq $new_rset->log_label){
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1005 my $new_name = "OLD_".$rset->log_label;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1006 $self->log("Found update supporting ResultSet clash, renaming to:\t${new_name}");
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1007 $self->unlink_ResultSet_DataSet($rset, $dset, $new_name);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1008
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1009 #This pset dbID has already been removed
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1010 #Will get updated with new rset dbID when updating DataSet
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1011 $replace_txt = 'Proposed ResultSet(dbID) replacement for DataSet('.$dset->name."):\t".$pset->dbID.' > ';
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1012 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1013 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1014
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1015
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1016 $new_rset->add_status('DAS_DISPLAYABLE');
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1017 my ($new_rset) = @{$rset_adaptor->store($new_rset)};
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1018
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1019 if(defined $replace_txt){
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1020 $self->log($replace_txt.$new_rset->dbID);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1021 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1022 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1023
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1024 my $xml_file = open_file($self->get_config('mage_xml_file'));
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1025
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1026 #slurp in changing separator to null so we get it all in one string.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1027 $self->experiment->mage_xml(do{ local ($/); <$xml_file>});
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1028 close($xml_file);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1029
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1030 $self->experiment($self->db->get_ExperimentAdaptor->update_mage_xml_by_Experiment($self->experiment()));
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1031 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1032 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1033
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1034 return;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1035 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1036
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1037
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1038 1;