IRootLab
An Open-Source MATLAB toolbox for vibrational biospectroscopy
demo_bmtable.m
Go to the documentation of this file.
1 %>@brief Biomarkers of Non-transformed vs. Transformed, separated by Chemical
2 %>
3 %> Splits SHE dataset in 5 (1 per chemical) and proceeds with separate biomarkers analyses for each dataset. Each of five datasets has
4 %> 2 classes: Non-transformed/Transformed
5 %>
6 %> Four different biomarkers identification methods are applied for comparison
7 %>
8 %>@file
9 %>@ingroup demo
10 
11 % Initialization
13 global FONTSIZE SCALE;
14 FONTSIZE = 13;
15 SCALE = 1.8;
16 
17 
18 
19 
20 %%%%%%%%% Dataset
21 ds01 = load_data_she5trays;
22 
23 pieces = data_split_classes(ds01, 1); % Splits by tray. Each piece will have two classes: Non-transformed vs Transformed
24 nop = numel(pieces);
25 for i = 1:nop
26  pieces(i).X = normaliz(pieces(i).X, [], 's');
27  cl = pieces(i).classlabels{1};
28  pieces(i).title = cl(1:find(cl == '|')-1);
29 end;
30 
31 
32 
33 %%%%%%%%% FOUR DIFFERENT METHODS ...
34 
35 
36 
37 %%%%% ... 11111 PCA-LDA ...
38 o = cascade_pcalda();
39 o.blocks{1}.no_factors = 10;
40 cascade_pcalda01 = o;
41 
42 
43 %
44 %
45 % %%%%%% ... 22222 U-test ...
46 u = fsg_test_u();
47 u.flag_logtake = 1;
48 fsg_test_u01 = u;
49 
51 u.blocks{1}.fsg = fsg_test_u01;
52 u.blocks{2}.type = 'none';
53 u.blocks{2}.nf_select = 10;
54 u.blocks{2}.threshold = 0.07;
55 u.blocks{2}.peakdetector = [];
56 u.blocks{2}.sortmode = 'grade';
57 cascade_fsel_grades_fsg01 = u;
58 cascade_fsel_grades_fsg01 = cascade_fsel_grades_fsg01.boot();
59 cascade_fsel_grades_fsg01 = cascade_fsel_grades_fsg01.train(ds01);
60 out = cascade_fsel_grades_fsg01.use(ds01);
61 fsel_fsg01 = out;
62 
63 tr = mutant();
64 tr.block = cascade_fsel_grades_fsg01;
65 
66 
67 %%%%%% ... 33333 LDA only ...
68 fcon_lda01 = fcon_lda();
69 
70 
71 
72 %%%%%% ... 44444 PLS ...
73 
74 % PLS block has a fcon_feaavg block before, just to show that bmtable is able to assimilate cases when
75 % different blocks work with different x-axis
76 fcon_pls01 = fcon_pls();
77 cascade_pls = block_cascade_base();
78 cascade_pls.blocks = {fcon_feaavg(), fcon_pls01};
79 % fcon_pls01.flag_autostd = 1;
80 
81 
82 
83 
84 %%%%%% The peak detector
85 o = peakdetector();
86 o = o.setbatch({'flag_perc', 1, ...
87 'flag_abs', 1, ...
88 'minaltitude', 0, ...
89 'minheight', 0, ...
90 'mindist', 3, ...
91 'no_max', 6});
92 peakdetector01 = o;
93 
94 
95 
96 %%%%%% The bmtable
97 bm = bmtable();
98 bm.blocks = {cascade_pcalda01, fcon_lda01, cascade_pls, tr};
99 bm.datasets = pieces;
100 bm.peakdetectors = {peakdetector01};
102 bm.units = {bmunit_au, bmunit_int}; % au for pca-lda loadings and t-test; int for the histogram
103 bm.data_hint = ds01;
104 bm.rowname_type = 'dataset';
105 bm.sig_j = [4, 4, 4, 4];
106 bm.sig_threshold = -log10(0.05);
107 bm.flag_train = 1;
108 iunits = [1, 1, 1, 1];
109 
110 
111 
112 % Set up the grid
113 for idata = 1:nop
114  for iblock = 1:numel(bm.blocks)
115  bm.grid{idata, iblock} = setbatch(struct(), {'i_block', iblock, 'i_dataset', idata, 'i_peakdetector', 1, 'i_art', ...
116  iblock, 'i_unit', iunits(iblock), 'params', {'flag_abs', iblock == 2}, 'flag_sig', iblock == 2});
117  end;
118 end;
119 
120 
121 
122 %-%
123 %-%
124 figure;
125 bm.draw_pl();
126 title('All chemicals');
128 save_as_png([], 'irr_peak-locations-plot');
129 % return;
130 %-%
131 for i = 1:nop
132  figure;
133  bm.draw_lines(i);
134  t = pieces(i).title;
135  if isempty(t)
136  t = sprintf('Dataset %d - classlabels=', i, cell2str(pieces(i).classlabels));
137  end;
138  title(t);
139  legend off;
140  maximize_window();
141  save_as_png([], good_filename(t));
142 % break;
143 end;
Unit - Integer.
Definition: bmunit_int.m:5
Art stuff.
Definition: bmart_square.m:5
function good_filename(in name)
function maximize_window(in h, in aspectratio, in normalizedsize)
function cell2str(in c)
Decimation - makes averages of adjacent features.
Definition: fcon_feaavg.m:2
Feature subset grader - Mann-Whitney "U"-test.
Definition: fsg_test_u.m:3
Peak Detector.
Definition: peakdetector.m:6
function setbatch(in o, in params)
Base Block class.
Definition: block.m:2
function save_as_png(in h, in fn, in dpi)
Unit - Arbitrary.
Definition: bmunit_au.m:5
Cascade block: fcon_pca -> fcon_lda.
Definition: cascade_pcalda.m:2
Fisher's Linear Discriminant Analysis.
Definition: fcon_lda.m:3
Art stuff.
function data_split_classes(in data, in hierarchy)
Art stuff.
Definition: bmart_diamond.m:4
Art stuff.
Definition: bmart_circle.m:4
Partial Least Squares Transformation aka PLSDA.
Definition: fcon_pls.m:8
function load_data_she5trays()
BioMarker Table.
Definition: bmtable.m:22
function fig_assert()
Cascade block: as_grades_fsg->as_fsel_grades->(extract_fsel)
Cascade block: sequence of blocks represented by a block.
function normaliz(in X, in x, in types, in idxs_fea)
"Mutant" block / metablock
Definition: mutant.m:4