IRootLab
An Open-Source MATLAB toolbox for vibrational biospectroscopy
dataio_mat.m
Go to the documentation of this file.
1 %> @brief Dataset loader/saver for mat files
2 %>
3 %> mat files are a bit tricky because the structure has evolved since the
4 %> beginning and backward compatibility is needed, but it is very stable now.
5 classdef dataio_mat < dataio
6  methods
7  %------------------------------------------------------------------
8  %> Loader
9  function data = load(o, range)
10 
11  if nargin == 1
12  range = [];
13  end;
14 
15 
16  %> *1* checks for dataclass variable within file
17  load(o.filename, '-mat', 'dataclass');
18  if ~exist('dataclass', 'var')
19 % irverbose('dataio_mat is creating default ''irdata'' object ...');
20  data = irdata();
21  else
22 % irverbose(sprintf('new ''%s'' from file ''%s''...', dataclass, o.filename), 0);
23  data = eval(dataclass);
24  end;
25 
26  try
27  load(o.filename, '-mat', 'DATA');
28  catch ME
29  irerror(['MATLAB couldn''t handle this file: ', ME.message]);
30  end;
31 
32  if ~exist('DATA', 'var')
33  irerror(sprintf('File ''%s'' does not contain a variable called ''DATA''', o.filename));
34  end;
35 
36  data = data.import_from_struct(DATA);
37 
38  %> TODO This is a hack present until I do a proper wavenumber record
39  %> while importing Pirouette files and make MATLAB import and record
40  %> these information (and re-generate the .mat files).
41  if ~isempty(range)
42  data.fea_x = linspace(range(1), range(2), size(DATA.X, 2));
43  else
44  if isempty(data.fea_x)
45  irwarning('x vector was empty, default x wavenumber vector will be used');
46  data.fea_x = linspace(o.defaultrange(1), o.defaultrange(2), size(DATA.X, 2));
47  end;
48  end;
49 
50 
51  data.assert_not_nan();
52  data.filename = o.filename;
53  data.filetype = 'mat';
54  data = data.make_groupnumbers();
55  end
56 
57 
58 
59  %------------------------------------------------------------------
60  %> Saver
61  function o = save(o, data)
62  dataclass = class(data); %#ok<*NASGU>
63  DATA = data;
64 
65  save(o.filename, 'DATA', 'dataclass');
66  irverbose(sprintf('Just saved file "%s"', o.filename), 2);
67  end;
68  end
69 end
function irverbose(in s, in level)
function irerror(in s)
Dataset class.
Definition: irdata.m:30
Dataset loader/saver common class.
Definition: dataio.m:2
Dataset loader/saver for mat files.
Definition: dataio_mat.m:5
function irwarning(in s)