4 %> @brief Dataset loader/saver
for the SHEWare database
15 function data = load(o)
16 flag_deact = ~isempty(o.iddeact);
18 fielddeact = '(flag_inactive is null or flag_inactive = 0)
as flag_active, ';
19 fielddeact2 = 'flag_active';
20 wheredeact = ' AND (flag_inactive is null or flag_inactive = 0)';
21 ljdeact = [' LEFT JOIN deact_spectrum ON deact_spectrum.idspectrum = spectrum.
id and deact_spectrum.iddeact = ' mat2str(o.iddeact)];
30 disp('-- Doing the BIG select ... --')
32 s_joins = [' LEFT JOIN series ON series.idspectrum = spectrum.
id and series.iddomain = ' mat2str(o.iddomain) ljdeact ...
33 ' LEFT JOIN colony ON colony.
id = spectrum.idcolony'];
35 s_fields = ['spectrum.
id as idspectrum, spectrum.file_name, colony.
id as colony_id, colony.code
as colony_code, ' fielddeact 'series.vector, series.
id as series_id'];
36 a_outputs = [{
'idspectrum',
'file_name',
'colony_id',
'colony_code'}, fielddeact2, {
'vector',
'series_id'}];
37 s_outputs_params = [];
38 s_wheres = [
' WHERE spectrum.idexperiment = ' mat2str(o.idexperiment) wheredeact];
39 for i_judge = 1:length(o.idjudge)
40 s_ij = mat2str(i_judge);
41 fieldij = ['params' s_ij];
42 s_fields = [s_fields ', sj' s_ij '.params
as ' fieldij];
43 s_joins = [s_joins ' LEFT JOIN spectrum_judge sj' s_ij ' on sj' s_ij '.idspectrum = spectrum.
id and ' ...
44 'sj' s_ij '.idjudge = ' mat2str(o.idjudge(i_judge))];
46 a_outputs = [a_outputs, fieldij];
48 if ~isempty(s_outputs_params)
49 s_outputs_params = [s_outputs_params ', '];
51 s_outputs_params = [s_outputs_params fieldij];
56 s_joins = [s_joins ' LEFT JOIN slide on slide.
id = colony.idslide LEFT JOIN tray on tray.
id = slide.idtray'];
57 s_wheres = [s_wheres ' AND tray.
id = ' int2str(o.idtray)];
60 s_select = ['SELECT ' s_fields ' FROM spectrum ' s_joins s_wheres ' HAVING series.
id > 0 ORDER BY spectrum.idcolony, spectrum.
id'];
62 a =
irquery(s_select); %
#ok<NASGU>
63 for i = 1:numel(a_outputs)
64 eval([a_outputs{i},
' = a.', a_outputs{i},
';']);
66 params_s = eval([
'{' s_outputs_params
'}']);
68 disp(
'-- ... done --')
70 no_obs = length(idspectrum);
71 a =
irquery(['select wncount, wn1, wn2 from domain where
id = ' mat2str(o.iddomain)]);
72 no_wn = a.wncount; wn1 = a.wn1; wn2 = a.wn2;
73 no_judges = length(params_s);
75 data =
irdata(); % Creates new dataset
object
76 data.classlabels = {};
77 data.
fea_x = linspace(wn1, wn2, no_wn);
78 X = zeros(no_obs, no_wn);
79 data.classes = zeros(no_obs, 1);
80 data.obsids = idspectrum;
81 data.obsnames = file_name;
82 data.groupcodes = colony_code;
84 n = 1; % pointer over data
90 vchar = char(vector{i_obs})
';
95 % X(i_obs, :) = str2num(['[
' vchar ']
']);
96 % X(i_obs, :) = str2double(regexp(vchar(2:end-1), ',
', 'split
'));
97 X(i_obs, :) = sscanf(vchar, '%f
', [1, no_wn]);
103 % . mounts a code like "A|T"
106 for i_judge = 1:no_judges
110 code = [code virg strip_code(char(params_s{i_judge}{i_obs})')];
113 % . fits code in the dataset
114 find_indexes = find(strcmp(data.classlabels, code));
115 if isempty(find_indexes)
116 data.classlabels{end+1} = code;
117 data.classes(i_obs) = data.nc-1;
119 data.classes(i_obs) = find_indexes(1)-1;
122 % progress visual feedback
124 if nn == 199 % arbitrary value
125 disp(sprintf(
'-- %5.1f %% --', i_obs/no_obs*100))
134 data.assert_not_nan();
136 data = data.make_groupnumbers();
139 fprintf('%d spectra were read\n', cnt_ok);
Dataset loader/saver for the SHEWare database.
Dataset loader/saver common class.
function data_sort_classlabels(in data)
function irquery(in varargin)
Analysis Session (AS) base class.
Property fea_x
feature x-axis