[77f386]: inst / bw_retrieve.m Maximize Restore History

Download this file

bw_retrieve.m    91 lines (80 with data), 3.2 kB

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
## Copyright (C) 2009 Olaf Till <olaf.till@uni-jena.de>
##
## This program is free software; you can redistribute it and/or modify
## it under the terms of the GNU General Public License as published by
## the Free Software Foundation; either version 3 of the License, or
## (at your option) any later version.
##
## This program is distributed in the hope that it will be useful,
## but WITHOUT ANY WARRANTY; without even the implied warranty of
## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
## GNU General Public License for more details.
##
## You should have received a copy of the GNU General Public License
## along with this program; if not, write to the Free Software
## Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
## -*- texinfo -*-
## @deftypefn {Function File} {} bw_retrieve (@var{f}, @var{args}, @var{fn}, [@var{matlab}])
## Retrieve results of computations started with @code{bw_start ()}.
## Computation need not be finished for all arguments. @var{f}, @var{args}:
## function name and filename of arguments given to @code{bw_start ()}. @var{fn}:
## path to file to save results in. @var{matlab}: if given and true, results
## are stored in Matlab compatible binary format; otherwise the binary
## format of Octave is used.
##
## Three variables are saved, "results" is a cell-array of results (empty
## entry if no result), one for each argument set, "errors" a vector
## with non-zero elements for each argument set which caused an error,
## and "messages" is a cell-array of the respective error messages, or
## empty values if there was none.
## @seealso {bw_start, bw_list, bw_clear}
## @end deftypefn
function bw_retrieve (varargin)
if ((nargs = length (varargin)) < 3 || nargs > 4)
error ("bw_retrieve: incorrect number of arguments");
endif
for id = 1:3
if (! ischar (varargin{id}) || size (varargin{id}, 1) > 1)
error ("bw_retrieve: argument %i not a (single) string", id);
endif
endfor
if (nargs == 4 && varargin{4})
matlab = true;
else
matlab = false;
endif
## default directories
data_dir = tilde_expand ("~/bw-data/");
state_dir = tilde_expand ("~/.bw-state/");
## configuration files
systemrc = fullfile (OCTAVE_HOME (), "share/octave/site/m/startup/bwrc");
userrc = "~/.bwrc";
## Read system-wide configuration.
source (systemrc);
## Read per-user configuration.
if (! isempty (stat (userrc)))
source (userrc);
endif
data_dir = tilde_expand (data_dir);
state_dir = tilde_expand (state_dir);
if (isempty (stat (state_dir)))
error ("bw_list: configured state directory %s does not exist", \
state_dir);
endif
path = fullfile (state_dir, \
sprintf ("%s-%s.state", \
varargin{1}, varargin{2}));
if (isempty (stat (path)))
error ("bw_retrieve: no state-file found for function %s and argumentfile %s", \
varargin{1}, varargin{2});
endif
tp = __bw_load_variable__ (path);
results = tp.results;
errors = tp.error;
messages = tp.msg;
if (matlab)
save ("-matl", varargin{3}, "results", "errors", "messages");
else
save ("-binary", varargin{3}, "results", "errors", "messages");
endif
endfunction