IRootLab
An Open-Source MATLAB toolbox for vibrational biospectroscopy
vis_curvefit.m
Go to the documentation of this file.
1 %> @brief 1D Scatterplot with x-axis values associated to classes and curve fit
2 %>
3 %> @sa uip_vis_curvefit.m
4 classdef vis_curvefit < vis
5  properties
6  idx_fea = 1;
7  flag_ud = 0;
8  flag_abs = 0;
9  conc = [];
10  end;
11 
12  methods
13  function o = vis_curvefit(o)
14  o.classtitle = '"Build Curves"';
15  o.inputclass = 'irdata';
16  end;
17  end;
18 
19  methods(Access=protected)
20  function out = do_use(o, data)
21  out = [];
22 
23  if length(o.conc) ~= data.nc
24  irerror(sprintf('Concentration vector and data classes don''t match cardinality (which are respectively %d and %d)', length(o.conc), data.nc));
25  end;
26 
27  % Sorts concentrations
28  x = o.conc;
29  temp = [x' (1:data.nc)'];
30  temp = sortrows(temp);
31  indexes = temp(:, 2)';
32  x = temp(:, 1)';
33 
34 
35  data = data.select_features(o.idx_fea);
36  if o.flag_ud
37  data.X = -data.X;
38  end;
39 
40  % Extracts class means
41  pieces = data_split_classes(data);
42  mean_control = mean(pieces(indexes(1)).X(:, 1));
43  irverbose(sprintf('* Mean "%s": %g', pieces(indexes(1)).classlabels{1}, mean_control), 1);
44  y = zeros(1, data.nc);
45  for i = 2:data.nc
46  % y(i) = abs(mean(pieces(indexes(i)).X(:, 1))-mean_control);
47  y(i) = mean(pieces(indexes(i)).X(:, 1))-mean_control;
48  if o.flag_abs
49  y(i) = abs(y(i));
50  end;
51  irverbose(sprintf('* Mean "%s": %g', pieces(indexes(i)).classlabels{1}, y(i)), 1);
52  end;
53 
54  % Curve fit
55  % p = polyfit(x, y, data.nc-4);
56  % yp = polyval(p, xp);
57  x_ =log10(x(2:end));
58  y_ = y(2:end);
59  xp_ = linspace(log10(x(2)), log10(x(data.nc)), 100);
60 
61  yp_ = spline(x_, y_, xp_);
62 
63 
64  % Now starts plotting
65  plot(xp_, yp_, 'k', 'LineWidth', 4);
66  hold on;
67 
68  for i = 2:data.nc
69  v = pieces(indexes(i)).X(:, 1);
70  v = v-mean(v)+y(i);
71  plot(x_(i-1)*ones(length(v), 1), v, 'Color', find_color(indexes(i)), 'Marker', find_marker(indexes(i)), 'MarkerSize', 10, 'LineStyle', 'none', 'LineWidth', 2);
72  end;
73 
74 
75  plot(x_, y_, 'ks', 'MarkerFaceColor', 'k', 'MarkerSize', 20);
76  for i = 1:data.nc-1
77  text(x_(i)+.13, y_(i), sprintf('%g', x(i+1)), 'FontSize', 25);
78  end;
79  % set(gca, 'XLim', [x_(1)-.00001, x_(end)+.00001]);
80  set(gca, 'XLim', [x_(1)-.25, x_(end)+.25]);
81  xlabel('log_{10}(Concentration)');
82  ylabel('Distance from reference class');
83  %title('Effect curve');
84  set_title(o.classtitle, data);
85  format_frank();
86  make_box();
87  end;
88  end;
89 end
function irverbose(in s, in level)
function make_box()
function find_marker(in i)
function find_color(in i)
function irerror(in s)
Dataset class.
Definition: irdata.m:30
Visualization base class.
Definition: vis.m:4
function data_split_classes(in data, in hierarchy)
1D Scatterplot with x-axis values associated to classes and curve fit
Definition: vis_curvefit.m:4
function format_frank(in F, in scale, in handles)
function set_title(in s, in obj)