scimatlab 0.1.9.dev0__tar.gz → 0.1.10__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- scimatlab-0.1.10/.gitignore +24 -0
- {scimatlab-0.1.9.dev0 → scimatlab-0.1.10}/PKG-INFO +1 -1
- scimatlab-0.1.10/src/scimatlab/matlab/+scifor/Log.m +139 -0
- {scimatlab-0.1.9.dev0 → scimatlab-0.1.10}/src/scimatlab/matlab/+scifor/for_each.m +20 -20
- scimatlab-0.1.9.dev0/.gitignore +0 -16
- {scimatlab-0.1.9.dev0 → scimatlab-0.1.10}/pyproject.toml +0 -0
- {scimatlab-0.1.9.dev0 → scimatlab-0.1.10}/src/scimatlab/__init__.py +0 -0
- {scimatlab-0.1.9.dev0 → scimatlab-0.1.10}/src/scimatlab/bridge.py +0 -0
- {scimatlab-0.1.9.dev0 → scimatlab-0.1.10}/src/scimatlab/matlab/+scidb/+internal/build_csv_kwargs.m +0 -0
- {scimatlab-0.1.9.dev0 → scimatlab-0.1.10}/src/scimatlab/matlab/+scidb/+internal/cartesian_product.m +0 -0
- {scimatlab-0.1.9.dev0 → scimatlab-0.1.10}/src/scimatlab/matlab/+scidb/+internal/ensure_registered.m +0 -0
- {scimatlab-0.1.9.dev0 → scimatlab-0.1.10}/src/scimatlab/matlab/+scidb/+internal/from_python.m +0 -0
- {scimatlab-0.1.9.dev0 → scimatlab-0.1.10}/src/scimatlab/matlab/+scidb/+internal/function_name.m +0 -0
- {scimatlab-0.1.9.dev0 → scimatlab-0.1.10}/src/scimatlab/matlab/+scidb/+internal/hash_function.m +0 -0
- {scimatlab-0.1.9.dev0 → scimatlab-0.1.10}/src/scimatlab/matlab/+scidb/+internal/load_pathinput_checked.m +0 -0
- {scimatlab-0.1.9.dev0 → scimatlab-0.1.10}/src/scimatlab/matlab/+scidb/+internal/metadata_to_pydict.m +0 -0
- {scimatlab-0.1.9.dev0 → scimatlab-0.1.10}/src/scimatlab/matlab/+scidb/+internal/metadata_to_pykwargs.m +0 -0
- {scimatlab-0.1.9.dev0 → scimatlab-0.1.10}/src/scimatlab/matlab/+scidb/+internal/normalize_cell_column.m +0 -0
- {scimatlab-0.1.9.dev0 → scimatlab-0.1.10}/src/scimatlab/matlab/+scidb/+internal/pipeline_registry.m +0 -0
- {scimatlab-0.1.9.dev0 → scimatlab-0.1.10}/src/scimatlab/matlab/+scidb/+internal/pydict_to_struct.m +0 -0
- {scimatlab-0.1.9.dev0 → scimatlab-0.1.10}/src/scimatlab/matlab/+scidb/+internal/pylist_to_cell.m +0 -0
- {scimatlab-0.1.9.dev0 → scimatlab-0.1.10}/src/scimatlab/matlab/+scidb/+internal/reject_csv_spec_args.m +0 -0
- {scimatlab-0.1.9.dev0 → scimatlab-0.1.10}/src/scimatlab/matlab/+scidb/+internal/resolve_var_names.m +0 -0
- {scimatlab-0.1.9.dev0 → scimatlab-0.1.10}/src/scimatlab/matlab/+scidb/+internal/split_csv_args.m +0 -0
- {scimatlab-0.1.9.dev0 → scimatlab-0.1.10}/src/scimatlab/matlab/+scidb/+internal/split_version_arg.m +0 -0
- {scimatlab-0.1.9.dev0 → scimatlab-0.1.10}/src/scimatlab/matlab/+scidb/+internal/to_python.m +0 -0
- {scimatlab-0.1.9.dev0 → scimatlab-0.1.10}/src/scimatlab/matlab/+scidb/+internal/to_python_input.m +0 -0
- {scimatlab-0.1.9.dev0 → scimatlab-0.1.10}/src/scimatlab/matlab/+scidb/+internal/try_flatten_cell_column.m +0 -0
- {scimatlab-0.1.9.dev0 → scimatlab-0.1.10}/src/scimatlab/matlab/+scidb/+internal/try_stack_numeric.m +0 -0
- {scimatlab-0.1.9.dev0 → scimatlab-0.1.10}/src/scimatlab/matlab/+scidb/+internal/unwrap_input.m +0 -0
- {scimatlab-0.1.9.dev0 → scimatlab-0.1.10}/src/scimatlab/matlab/+scidb/+internal/validate_csv_filename.m +0 -0
- {scimatlab-0.1.9.dev0 → scimatlab-0.1.10}/src/scimatlab/matlab/+scidb/AcrossVariants.m +0 -0
- {scimatlab-0.1.9.dev0 → scimatlab-0.1.10}/src/scimatlab/matlab/+scidb/BaseVariable.m +0 -0
- {scimatlab-0.1.9.dev0 → scimatlab-0.1.10}/src/scimatlab/matlab/+scidb/ColName.m +0 -0
- {scimatlab-0.1.9.dev0 → scimatlab-0.1.10}/src/scimatlab/matlab/+scidb/Filter.m +0 -0
- {scimatlab-0.1.9.dev0 → scimatlab-0.1.10}/src/scimatlab/matlab/+scidb/Fixed.m +0 -0
- {scimatlab-0.1.9.dev0 → scimatlab-0.1.10}/src/scimatlab/matlab/+scidb/Log.m +0 -0
- {scimatlab-0.1.9.dev0 → scimatlab-0.1.10}/src/scimatlab/matlab/+scidb/Merge.m +0 -0
- {scimatlab-0.1.9.dev0 → scimatlab-0.1.10}/src/scimatlab/matlab/+scidb/PathGenerator.m +0 -0
- {scimatlab-0.1.9.dev0 → scimatlab-0.1.10}/src/scimatlab/matlab/+scidb/Pipeline.m +0 -0
- {scimatlab-0.1.9.dev0 → scimatlab-0.1.10}/src/scimatlab/matlab/+scidb/SchemaKey.m +0 -0
- {scimatlab-0.1.9.dev0 → scimatlab-0.1.10}/src/scimatlab/matlab/+scidb/Variant.m +0 -0
- {scimatlab-0.1.9.dev0 → scimatlab-0.1.10}/src/scimatlab/matlab/+scidb/add_to_var_group.m +0 -0
- {scimatlab-0.1.9.dev0 → scimatlab-0.1.10}/src/scimatlab/matlab/+scidb/close_database.m +0 -0
- {scimatlab-0.1.9.dev0 → scimatlab-0.1.10}/src/scimatlab/matlab/+scidb/configure_database.m +0 -0
- {scimatlab-0.1.9.dev0 → scimatlab-0.1.10}/src/scimatlab/matlab/+scidb/exclude_schema.m +0 -0
- {scimatlab-0.1.9.dev0 → scimatlab-0.1.10}/src/scimatlab/matlab/+scidb/for_each.m +0 -0
- {scimatlab-0.1.9.dev0 → scimatlab-0.1.10}/src/scimatlab/matlab/+scidb/get_database.m +0 -0
- {scimatlab-0.1.9.dev0 → scimatlab-0.1.10}/src/scimatlab/matlab/+scidb/get_var_group.m +0 -0
- {scimatlab-0.1.9.dev0 → scimatlab-0.1.10}/src/scimatlab/matlab/+scidb/include_schema.m +0 -0
- {scimatlab-0.1.9.dev0 → scimatlab-0.1.10}/src/scimatlab/matlab/+scidb/isabsolute.m +0 -0
- {scimatlab-0.1.9.dev0 → scimatlab-0.1.10}/src/scimatlab/matlab/+scidb/list_exclusions.m +0 -0
- {scimatlab-0.1.9.dev0 → scimatlab-0.1.10}/src/scimatlab/matlab/+scidb/list_var_groups.m +0 -0
- {scimatlab-0.1.9.dev0 → scimatlab-0.1.10}/src/scimatlab/matlab/+scidb/raw_sql.m +0 -0
- {scimatlab-0.1.9.dev0 → scimatlab-0.1.10}/src/scimatlab/matlab/+scidb/register_variable.m +0 -0
- {scimatlab-0.1.9.dev0 → scimatlab-0.1.10}/src/scimatlab/matlab/+scidb/remove_from_var_group.m +0 -0
- {scimatlab-0.1.9.dev0 → scimatlab-0.1.10}/src/scimatlab/matlab/+scidb/schema_key.m +0 -0
- {scimatlab-0.1.9.dev0 → scimatlab-0.1.10}/src/scimatlab/matlab/+scifor/Col.m +0 -0
- {scimatlab-0.1.9.dev0 → scimatlab-0.1.10}/src/scimatlab/matlab/+scifor/ColFilter.m +0 -0
- {scimatlab-0.1.9.dev0 → scimatlab-0.1.10}/src/scimatlab/matlab/+scifor/ColName.m +0 -0
- {scimatlab-0.1.9.dev0 → scimatlab-0.1.10}/src/scimatlab/matlab/+scifor/ColumnSelection.m +0 -0
- {scimatlab-0.1.9.dev0 → scimatlab-0.1.10}/src/scimatlab/matlab/+scifor/CompoundFilter.m +0 -0
- {scimatlab-0.1.9.dev0 → scimatlab-0.1.10}/src/scimatlab/matlab/+scifor/Fixed.m +0 -0
- {scimatlab-0.1.9.dev0 → scimatlab-0.1.10}/src/scimatlab/matlab/+scifor/Merge.m +0 -0
- {scimatlab-0.1.9.dev0 → scimatlab-0.1.10}/src/scimatlab/matlab/+scifor/NotFilter.m +0 -0
- {scimatlab-0.1.9.dev0 → scimatlab-0.1.10}/src/scimatlab/matlab/+scifor/PathInput.m +0 -0
- {scimatlab-0.1.9.dev0 → scimatlab-0.1.10}/src/scimatlab/matlab/+scifor/PathOutput.m +0 -0
- {scimatlab-0.1.9.dev0 → scimatlab-0.1.10}/src/scimatlab/matlab/+scifor/get_schema.m +0 -0
- {scimatlab-0.1.9.dev0 → scimatlab-0.1.10}/src/scimatlab/matlab/+scifor/set_schema.m +0 -0
- {scimatlab-0.1.9.dev0 → scimatlab-0.1.10}/src/scimatlab/matlab/+scihist/configure_database.m +0 -0
- {scimatlab-0.1.9.dev0 → scimatlab-0.1.10}/src/scimatlab/matlab/+scihist/for_each.m +0 -0
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
.venv
|
|
2
|
+
.DS_Store
|
|
3
|
+
*/*/__pycache__
|
|
4
|
+
others_projects/sciforge
|
|
5
|
+
scistack-gui/extension/node_modules/
|
|
6
|
+
scistack-gui/frontend/node_modules/__pycache__/
|
|
7
|
+
*.pyc
|
|
8
|
+
__pycache__/
|
|
9
|
+
*.pyc
|
|
10
|
+
*.pyo
|
|
11
|
+
*.egg-info/
|
|
12
|
+
# Python package build output (rebuilt fresh by CI on every publish; a
|
|
13
|
+
# committed dist/ gets deleted by `rm -rf dist` mid-build and dirties the
|
|
14
|
+
# tree for hatch-vcs). Excludes scistack-gui/extension/dist/, which is an
|
|
15
|
+
# intentionally committed compiled bundle, not a Python build artifact.
|
|
16
|
+
/dist/
|
|
17
|
+
/*/dist/
|
|
18
|
+
# Generated database artifacts (DuckDB data/lineage + write-ahead logs)
|
|
19
|
+
*.duckdb
|
|
20
|
+
*.duckdb.wal
|
|
21
|
+
*.wal
|
|
22
|
+
scistack-gui/frontend/node_modules/
|
|
23
|
+
# mkdocs build output (regenerated by `mkdocs build`)
|
|
24
|
+
/site/
|
|
@@ -0,0 +1,139 @@
|
|
|
1
|
+
classdef Log
|
|
2
|
+
%SCIFOR.LOG Unified logger that delegates to Python scistacklog.Log.
|
|
3
|
+
%
|
|
4
|
+
% scifor.Log.set_level('DEBUG') — show all messages (both sinks)
|
|
5
|
+
% scifor.Log.set_level('INFO') — show INFO, WARN, ERROR (default)
|
|
6
|
+
% scifor.Log.set_level('DEBUG', 'file') — full detail in scidb.log only
|
|
7
|
+
% scifor.Log.set_level('WARN') — show WARN, ERROR only
|
|
8
|
+
%
|
|
9
|
+
% scifor.Log.debug('Processing %d items', n)
|
|
10
|
+
% scifor.Log.info('Loaded %s', type_name)
|
|
11
|
+
% scifor.Log.warn('No data for %s', key)
|
|
12
|
+
% scifor.Log.err('Failed: %s', msg)
|
|
13
|
+
%
|
|
14
|
+
% Two sinks with independent levels (see the scistacklog package):
|
|
15
|
+
% console (stderr): HH:MM:SS [layer] message
|
|
16
|
+
% file (scidb.log): YYYY-MM-DD HH:MM:SS.FFF LEVEL [layer] message
|
|
17
|
+
%
|
|
18
|
+
% All logging calls delegate to Python's scistacklog.Log class directly —
|
|
19
|
+
% NOT via scidb — so that standalone (no-database) scifor usage in MATLAB
|
|
20
|
+
% stays free of a Python scidb dependency, mirroring Python scifor's own
|
|
21
|
+
% "scifor stays scidb-free; it depends only on scistacklog" contract.
|
|
22
|
+
% scidb.log.Log is a re-export of the same scistacklog.Log class, so
|
|
23
|
+
% scifor.Log and scidb.Log share one underlying Python singleton and one
|
|
24
|
+
% appdata cache — a level/path change from either class is visible to
|
|
25
|
+
% both, regardless of which one a given MATLAB session touches first.
|
|
26
|
+
%
|
|
27
|
+
% The log level is cached in MATLAB's appdata for performance, but the
|
|
28
|
+
% Python logger is the source of truth.
|
|
29
|
+
|
|
30
|
+
properties (Constant)
|
|
31
|
+
DEBUG = 0
|
|
32
|
+
INFO = 1
|
|
33
|
+
WARN = 2
|
|
34
|
+
ERROR = 3
|
|
35
|
+
end
|
|
36
|
+
|
|
37
|
+
methods (Static)
|
|
38
|
+
|
|
39
|
+
function set_level(level, sink)
|
|
40
|
+
%SET_LEVEL Set the log level of one or both sinks.
|
|
41
|
+
% scifor.Log.set_level(level) — both sinks
|
|
42
|
+
% scifor.Log.set_level(level, sink) — 'console' | 'file' | 'both'
|
|
43
|
+
% Accepts a string ('DEBUG','INFO','WARN','ERROR') or numeric (0-3).
|
|
44
|
+
% Delegates to Python logging to unify log level settings.
|
|
45
|
+
if isnumeric(level)
|
|
46
|
+
% Convert numeric to string for Python
|
|
47
|
+
level_names = {'DEBUG', 'INFO', 'WARN', 'ERROR'};
|
|
48
|
+
if level >= 0 && level <= 3
|
|
49
|
+
level = level_names{level + 1};
|
|
50
|
+
else
|
|
51
|
+
level = 'INFO';
|
|
52
|
+
end
|
|
53
|
+
end
|
|
54
|
+
% Set Python log level (source of truth)
|
|
55
|
+
if nargin < 2
|
|
56
|
+
py.scistacklog.Log.set_level(char(level));
|
|
57
|
+
else
|
|
58
|
+
py.scistacklog.Log.set_level(char(level), char(sink));
|
|
59
|
+
end
|
|
60
|
+
% Cache the effective level (min of the two sinks) for fast
|
|
61
|
+
% get_level() calls — a message suppressed by both sinks never
|
|
62
|
+
% needs to cross the Python bridge. Shared appdata key with
|
|
63
|
+
% scidb.Log: same underlying Python singleton, one cache.
|
|
64
|
+
level_num = double(py.scistacklog.Log.get_level());
|
|
65
|
+
setappdata(0, 'scidb_log_level', level_num);
|
|
66
|
+
end
|
|
67
|
+
|
|
68
|
+
function level = get_level()
|
|
69
|
+
%GET_LEVEL Get the current log level (default: INFO).
|
|
70
|
+
% Returns cached value for performance (avoids Python bridge crossing).
|
|
71
|
+
if isappdata(0, 'scidb_log_level')
|
|
72
|
+
level = getappdata(0, 'scidb_log_level');
|
|
73
|
+
else
|
|
74
|
+
level = scifor.Log.INFO;
|
|
75
|
+
end
|
|
76
|
+
end
|
|
77
|
+
|
|
78
|
+
function set_path(log_path)
|
|
79
|
+
%SET_PATH Set the log file path for file output.
|
|
80
|
+
% Called automatically by scidb.configure_database().
|
|
81
|
+
% Delegates to Python logging to unify log file location.
|
|
82
|
+
py.scistacklog.Log.set_path(char(log_path));
|
|
83
|
+
% Cache in MATLAB for legacy compatibility
|
|
84
|
+
setappdata(0, 'scidb_log_path', char(log_path));
|
|
85
|
+
end
|
|
86
|
+
|
|
87
|
+
function p = get_path()
|
|
88
|
+
%GET_PATH Get the current log file path (empty if not set).
|
|
89
|
+
if isappdata(0, 'scidb_log_path')
|
|
90
|
+
p = getappdata(0, 'scidb_log_path');
|
|
91
|
+
else
|
|
92
|
+
p = '';
|
|
93
|
+
end
|
|
94
|
+
end
|
|
95
|
+
|
|
96
|
+
function debug(fmt, varargin)
|
|
97
|
+
%DEBUG Log a message at DEBUG level.
|
|
98
|
+
% Delegates to Python logging for unified output; MATLAB-originated
|
|
99
|
+
% lines carry the [matlab] layer tag.
|
|
100
|
+
if scifor.Log.get_level() <= scifor.Log.DEBUG
|
|
101
|
+
msg = sprintf(fmt, varargin{:});
|
|
102
|
+
py.scistacklog.Log.debug(msg, pyargs('layer', 'matlab'));
|
|
103
|
+
end
|
|
104
|
+
end
|
|
105
|
+
|
|
106
|
+
function info(fmt, varargin)
|
|
107
|
+
%INFO Log a message at INFO level.
|
|
108
|
+
% Delegates to Python logging for unified output; MATLAB-originated
|
|
109
|
+
% lines carry the [matlab] layer tag.
|
|
110
|
+
if scifor.Log.get_level() <= scifor.Log.INFO
|
|
111
|
+
msg = sprintf(fmt, varargin{:});
|
|
112
|
+
py.scistacklog.Log.info(msg, pyargs('layer', 'matlab'));
|
|
113
|
+
end
|
|
114
|
+
end
|
|
115
|
+
|
|
116
|
+
function warn(fmt, varargin)
|
|
117
|
+
%WARN Log a message at WARN level.
|
|
118
|
+
% Delegates to Python logging for unified output; MATLAB-originated
|
|
119
|
+
% lines carry the [matlab] layer tag.
|
|
120
|
+
if scifor.Log.get_level() <= scifor.Log.WARN
|
|
121
|
+
msg = sprintf(fmt, varargin{:});
|
|
122
|
+
py.scistacklog.Log.warn(msg, pyargs('layer', 'matlab'));
|
|
123
|
+
end
|
|
124
|
+
end
|
|
125
|
+
|
|
126
|
+
function err(fmt, varargin)
|
|
127
|
+
%ERR Log a message at ERROR level.
|
|
128
|
+
% Named 'err' to avoid conflict with MATLAB's built-in 'error'.
|
|
129
|
+
% Delegates to Python logging for unified output; MATLAB-originated
|
|
130
|
+
% lines carry the [matlab] layer tag.
|
|
131
|
+
if scifor.Log.get_level() <= scifor.Log.ERROR
|
|
132
|
+
msg = sprintf(fmt, varargin{:});
|
|
133
|
+
py.scistacklog.Log.error(msg, pyargs('layer', 'matlab'));
|
|
134
|
+
end
|
|
135
|
+
end
|
|
136
|
+
|
|
137
|
+
end
|
|
138
|
+
|
|
139
|
+
end
|
|
@@ -171,7 +171,7 @@ function varargout = for_each(fn, inputs, varargin)
|
|
|
171
171
|
placeholder_keys = string(pi.placeholder_keys());
|
|
172
172
|
if ~isempty(discovered_combos) && all(ismember(meta_keys, placeholder_keys))
|
|
173
173
|
opts.all_combos = project_combos(discovered_combos, meta_keys);
|
|
174
|
-
|
|
174
|
+
scifor.Log.debug('pathinput_discovery: using %d disk combos', ...
|
|
175
175
|
numel(opts.all_combos));
|
|
176
176
|
end
|
|
177
177
|
end
|
|
@@ -181,7 +181,7 @@ function varargout = for_each(fn, inputs, varargin)
|
|
|
181
181
|
for i = 1:numel(meta_values)
|
|
182
182
|
if isempty(meta_values{i})
|
|
183
183
|
if key_has_source(inputs, meta_keys(i), pi)
|
|
184
|
-
|
|
184
|
+
scifor.Log.warn('no values found for ''%s'' in inputs, 0 iterations', ...
|
|
185
185
|
meta_keys(i));
|
|
186
186
|
else
|
|
187
187
|
error('scifor:for_each', ...
|
|
@@ -423,16 +423,16 @@ function varargout = for_each(fn, inputs, varargin)
|
|
|
423
423
|
else
|
|
424
424
|
iter_str = sprintf('for_each(%s) — %d iterations', fn_name, total);
|
|
425
425
|
end
|
|
426
|
-
|
|
426
|
+
scifor.Log.info('%s: %s', iter_str, meta_summary);
|
|
427
427
|
|
|
428
428
|
% --- Detailed config: inputs ---
|
|
429
429
|
inputs_str = format_inputs(inputs, input_names, data_idx);
|
|
430
|
-
|
|
430
|
+
scifor.Log.info('inputs: %s', inputs_str);
|
|
431
431
|
|
|
432
432
|
% --- Detailed config: metadata actual values ---
|
|
433
433
|
for mk2 = 1:numel(meta_keys)
|
|
434
434
|
if ~startsWith(meta_keys(mk2), "__")
|
|
435
|
-
|
|
435
|
+
scifor.Log.debug('%s=%s', meta_keys(mk2), format_meta_values(meta_values{mk2}));
|
|
436
436
|
end
|
|
437
437
|
end
|
|
438
438
|
|
|
@@ -455,7 +455,7 @@ function varargout = for_each(fn, inputs, varargin)
|
|
|
455
455
|
opt_parts{end+1} = sprintf('where=%s', class(where_filter));
|
|
456
456
|
end
|
|
457
457
|
if ~isempty(opt_parts)
|
|
458
|
-
|
|
458
|
+
scifor.Log.info('options: %s', strjoin(opt_parts, ', '));
|
|
459
459
|
end
|
|
460
460
|
|
|
461
461
|
% --- Dry-run header ---
|
|
@@ -561,7 +561,7 @@ function varargout = for_each(fn, inputs, varargin)
|
|
|
561
561
|
&& elapsed_now >= PROGRESS_START_DELAY_S ...
|
|
562
562
|
&& (elapsed_now - progress_last_emit) >= PROGRESS_MIN_INTERVAL_S
|
|
563
563
|
progress_last_emit = elapsed_now;
|
|
564
|
-
|
|
564
|
+
scifor.Log.info(['progress: %s=%s (%d/%d) — %d/%d combos ' ...
|
|
565
565
|
'(%.1f%%), completed=%d, failed=%d, elapsed=%.1fs'], ...
|
|
566
566
|
progress_key, char(string(pv)), progress_seen, ...
|
|
567
567
|
progress_total, c - 1, total, ...
|
|
@@ -702,7 +702,7 @@ function varargout = for_each(fn, inputs, varargin)
|
|
|
702
702
|
run_msg = sprintf('[run] %s: %s(%s)', metadata_str, fn_name, ...
|
|
703
703
|
strjoin(string(input_names'), ', '));
|
|
704
704
|
end
|
|
705
|
-
|
|
705
|
+
scifor.Log.debug('%s', run_msg);
|
|
706
706
|
|
|
707
707
|
% share_limits injection: append each named input's group limits as
|
|
708
708
|
% trailing positional args (Python injects named kwargs; MATLAB has
|
|
@@ -802,7 +802,7 @@ function varargout = for_each(fn, inputs, varargin)
|
|
|
802
802
|
end
|
|
803
803
|
end
|
|
804
804
|
catch err2
|
|
805
|
-
|
|
805
|
+
scifor.Log.warn('%s: cannot distribute output %d: %s', ...
|
|
806
806
|
metadata_str, o, err2.message);
|
|
807
807
|
continue;
|
|
808
808
|
end
|
|
@@ -827,7 +827,7 @@ function varargout = for_each(fn, inputs, varargin)
|
|
|
827
827
|
varargout{1} = [];
|
|
828
828
|
end
|
|
829
829
|
else
|
|
830
|
-
|
|
830
|
+
scifor.Log.info('for_each(%s) done in %.1fs: completed=%d, failed=%d, total=%d', ...
|
|
831
831
|
fn_name, toc(loop_t0), completed, skipped, total);
|
|
832
832
|
% One line per distinct failure reason (combos capped at 5), so the
|
|
833
833
|
% default (INFO) log answers "what failed and why".
|
|
@@ -841,7 +841,7 @@ function varargout = for_each(fn, inputs, varargin)
|
|
|
841
841
|
shown = sprintf('%s (+%d more)', shown, ...
|
|
842
842
|
numel(combos_for_reason) - n_shown);
|
|
843
843
|
end
|
|
844
|
-
|
|
844
|
+
scifor.Log.info('failed: %d × "%s" — %s', ...
|
|
845
845
|
numel(combos_for_reason), reason, shown);
|
|
846
846
|
end
|
|
847
847
|
if n_outputs == 0
|
|
@@ -1561,11 +1561,11 @@ function values = decategorize_schema_column(col_data, key, input_name)
|
|
|
1561
1561
|
&& all(~isnan(nums)) && all(string(nums) == labels);
|
|
1562
1562
|
if lossless
|
|
1563
1563
|
values = nums;
|
|
1564
|
-
|
|
1564
|
+
scifor.Log.debug(['schema key ''%s'' (input ''%s''): categorical ' ...
|
|
1565
1565
|
'column recovered as numeric'], key, input_name);
|
|
1566
1566
|
else
|
|
1567
1567
|
values = labels;
|
|
1568
|
-
|
|
1568
|
+
scifor.Log.debug(['schema key ''%s'' (input ''%s''): categorical ' ...
|
|
1569
1569
|
'column kept as strings (labels are not canonical numeric ' ...
|
|
1570
1570
|
'spellings)'], key, input_name);
|
|
1571
1571
|
end
|
|
@@ -1600,7 +1600,7 @@ function types = capture_schema_column_types(inputs, keys)
|
|
|
1600
1600
|
end
|
|
1601
1601
|
if ~isfield(types, key)
|
|
1602
1602
|
types.(key) = info;
|
|
1603
|
-
|
|
1603
|
+
scifor.Log.debug(['schema key ''%s'' (input ''%s''): input ' ...
|
|
1604
1604
|
'column type %s'], key, input_names{p}, info.class);
|
|
1605
1605
|
elseif ~strcmp(types.(key).class, info.class)
|
|
1606
1606
|
types.(key).conflict = true;
|
|
@@ -1625,7 +1625,7 @@ function tbl = restore_schema_column_types(tbl, col_types)
|
|
|
1625
1625
|
end
|
|
1626
1626
|
info = col_types.(key);
|
|
1627
1627
|
if info.conflict
|
|
1628
|
-
|
|
1628
|
+
scifor.Log.warn(['schema key ''%s'': input tables disagree on ' ...
|
|
1629
1629
|
'column type — leaving the output column as %s'], ...
|
|
1630
1630
|
key, class(tbl.(key)));
|
|
1631
1631
|
continue;
|
|
@@ -1636,10 +1636,10 @@ function tbl = restore_schema_column_types(tbl, col_types)
|
|
|
1636
1636
|
end
|
|
1637
1637
|
try
|
|
1638
1638
|
tbl.(key) = cast_schema_column(col, info);
|
|
1639
|
-
|
|
1639
|
+
scifor.Log.debug(['schema key ''%s'': output column restored ' ...
|
|
1640
1640
|
'to input type %s'], key, info.class);
|
|
1641
1641
|
catch err
|
|
1642
|
-
|
|
1642
|
+
scifor.Log.warn(['schema key ''%s'': cannot restore input ' ...
|
|
1643
1643
|
'column type %s (%s) — leaving as %s'], ...
|
|
1644
1644
|
key, info.class, err.message, class(col));
|
|
1645
1645
|
end
|
|
@@ -2104,7 +2104,7 @@ function [meta_args, opts] = split_options(varargin)
|
|
|
2104
2104
|
i = i + 2;
|
|
2105
2105
|
continue;
|
|
2106
2106
|
case "_log_fn"
|
|
2107
|
-
% Deprecated — ignored. scifor logs through
|
|
2107
|
+
% Deprecated — ignored. scifor logs through scifor.Log
|
|
2108
2108
|
% (scistacklog facade) directly; accepted so existing
|
|
2109
2109
|
% call sites don't break.
|
|
2110
2110
|
i = i + 2;
|
|
@@ -2334,12 +2334,12 @@ function [failure_reasons, failure_order] = record_iteration_failure( ...
|
|
|
2334
2334
|
else
|
|
2335
2335
|
failure_reasons(reason) = {metadata_str};
|
|
2336
2336
|
failure_order{end+1} = reason;
|
|
2337
|
-
|
|
2337
|
+
scifor.Log.warn(['iteration failed: %s — %s: %s ' ...
|
|
2338
2338
|
'(first occurrence; report follows)\n%s'], ...
|
|
2339
2339
|
metadata_str, context, err.message, ...
|
|
2340
2340
|
getReport(err, 'extended', 'hyperlinks', 'off'));
|
|
2341
2341
|
end
|
|
2342
|
-
|
|
2342
|
+
scifor.Log.debug('[skip] %s: %s: %s', metadata_str, context, err.message);
|
|
2343
2343
|
end
|
|
2344
2344
|
|
|
2345
2345
|
|
scimatlab-0.1.9.dev0/.gitignore
DELETED
|
@@ -1,16 +0,0 @@
|
|
|
1
|
-
.venv
|
|
2
|
-
.DS_Store
|
|
3
|
-
*/*/__pycache__
|
|
4
|
-
others_projects/sciforge
|
|
5
|
-
scistack-gui/extension/node_modules/
|
|
6
|
-
scistack-gui/frontend/node_modules/__pycache__/
|
|
7
|
-
*.pyc
|
|
8
|
-
__pycache__/
|
|
9
|
-
*.pyc
|
|
10
|
-
*.pyo
|
|
11
|
-
|
|
12
|
-
# Generated database artifacts (DuckDB data/lineage + write-ahead logs)
|
|
13
|
-
*.duckdb
|
|
14
|
-
*.duckdb.wal
|
|
15
|
-
*.wal
|
|
16
|
-
scistack-gui/frontend/node_modules/
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{scimatlab-0.1.9.dev0 → scimatlab-0.1.10}/src/scimatlab/matlab/+scidb/+internal/build_csv_kwargs.m
RENAMED
|
File without changes
|
{scimatlab-0.1.9.dev0 → scimatlab-0.1.10}/src/scimatlab/matlab/+scidb/+internal/cartesian_product.m
RENAMED
|
File without changes
|
{scimatlab-0.1.9.dev0 → scimatlab-0.1.10}/src/scimatlab/matlab/+scidb/+internal/ensure_registered.m
RENAMED
|
File without changes
|
{scimatlab-0.1.9.dev0 → scimatlab-0.1.10}/src/scimatlab/matlab/+scidb/+internal/from_python.m
RENAMED
|
File without changes
|
{scimatlab-0.1.9.dev0 → scimatlab-0.1.10}/src/scimatlab/matlab/+scidb/+internal/function_name.m
RENAMED
|
File without changes
|
{scimatlab-0.1.9.dev0 → scimatlab-0.1.10}/src/scimatlab/matlab/+scidb/+internal/hash_function.m
RENAMED
|
File without changes
|
|
File without changes
|
{scimatlab-0.1.9.dev0 → scimatlab-0.1.10}/src/scimatlab/matlab/+scidb/+internal/metadata_to_pydict.m
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{scimatlab-0.1.9.dev0 → scimatlab-0.1.10}/src/scimatlab/matlab/+scidb/+internal/pipeline_registry.m
RENAMED
|
File without changes
|
{scimatlab-0.1.9.dev0 → scimatlab-0.1.10}/src/scimatlab/matlab/+scidb/+internal/pydict_to_struct.m
RENAMED
|
File without changes
|
{scimatlab-0.1.9.dev0 → scimatlab-0.1.10}/src/scimatlab/matlab/+scidb/+internal/pylist_to_cell.m
RENAMED
|
File without changes
|
|
File without changes
|
{scimatlab-0.1.9.dev0 → scimatlab-0.1.10}/src/scimatlab/matlab/+scidb/+internal/resolve_var_names.m
RENAMED
|
File without changes
|
{scimatlab-0.1.9.dev0 → scimatlab-0.1.10}/src/scimatlab/matlab/+scidb/+internal/split_csv_args.m
RENAMED
|
File without changes
|
{scimatlab-0.1.9.dev0 → scimatlab-0.1.10}/src/scimatlab/matlab/+scidb/+internal/split_version_arg.m
RENAMED
|
File without changes
|
|
File without changes
|
{scimatlab-0.1.9.dev0 → scimatlab-0.1.10}/src/scimatlab/matlab/+scidb/+internal/to_python_input.m
RENAMED
|
File without changes
|
|
File without changes
|
{scimatlab-0.1.9.dev0 → scimatlab-0.1.10}/src/scimatlab/matlab/+scidb/+internal/try_stack_numeric.m
RENAMED
|
File without changes
|
{scimatlab-0.1.9.dev0 → scimatlab-0.1.10}/src/scimatlab/matlab/+scidb/+internal/unwrap_input.m
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{scimatlab-0.1.9.dev0 → scimatlab-0.1.10}/src/scimatlab/matlab/+scidb/remove_from_var_group.m
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{scimatlab-0.1.9.dev0 → scimatlab-0.1.10}/src/scimatlab/matlab/+scihist/configure_database.m
RENAMED
|
File without changes
|
|
File without changes
|