Loading matlab/src/classes/@MatMust/MatMust.m +43 −23 Original line number Diff line number Diff line Loading @@ -168,35 +168,51 @@ classdef MatMust < handle 'mode', 'SIMPLE'}; try data = webread([obj.url,obj.urlsub, query], args{:} ,obj.GEToptions); response = webread([obj.url,obj.urlsub, query], args{:} ,obj.GEToptions); catch ME fprintf('+++ WARNING\n%s - %s\n', ME.identifier, ME.message) return end if isa(response,'struct') data{1} = response; else data = response; end %refine date string to adapt MATLAB date format for i=1:numel(data) data_par = data(i).data; for i=1:numel(data{1}) if isempty(data{1}(i).data) fprintf('+++ WARNING\n%s for %s\n', 'No Data existing in time span', data.name) continue end data_par = data{1}(i).data; t = num2cell(datenum(datetime('1970-01-01', 'TimeZone','utc'))+(str2num(str2mat(data_par.date))/1000/86400)); [data(i).data.dateMAT] = deal(t{:}); [data{1}(i).data.dateMAT] = deal(t{:}); clear t end if nargin > 5 if any(ismember(varargin,'dump')) fprintf('+++++++++++++ DATA RESULT LIST +++++++++++++\n'); for i=1:numel(data) data_par = data(i).data; fprintf('%s-%s: %s -> %s\n', data(i).subsystem, data(i).type, data(i).name, data(i).description ); for i=1:numel(data{1}) if isempty(data{i}(i).data) continue end data_par = data{i}.data; fprintf('%s-%s: %s -> %s\n', data{1}(i).subsystem, data{1}(i).type, data{1}(i).name, data{1}(i).description ); %TODO filter for several kind of dataType 'DOUBLE', %'SIGNED_SMALL_INT', 'STRING' switch data(i).dataType switch data{1}(i).dataType case 'DOUBLE' format = '%f'; case 'SIGNED_SMALL_INT' case {'SIGNED_SMALL_INT', 'UNSIGNED_INT'} format = '%i'; case 'STRING' format = '%s'; otherwise format = '%s'; end format = ['%s - ',format,'\n']; for i = 1:numel(data_par) Loading @@ -208,19 +224,22 @@ classdef MatMust < handle fprintf('+++++++++++++++++++++++++++++++++++++++++\n'); end if any(ismember(varargin,'plot')) for i=1:numel(data) data_par = data(i).data; for i=1:numel(data{1}) if isempty(data{1}(i).data) continue end data_par = data{1}(i).data; figure title(sprintf('%s-%s: %s -> %s\n', data(i).subsystem, data(i).type, data(i).name, data(i).description )) title(sprintf('%s-%s: %s -> %s\n', data{1}(i).subsystem, data{1}(i).type, data{1}(i).name, data{1}(i).description )) if strcmp(calibrate,'true') switch class(data_par(1).calibratedValue) case 'char' indx = [1,find(diff([data_par.value])~=0)]+1; [ylabels,charind ] = unique(replace({data_par(indx).calibratedValue},'_',' '),'stable'); ylabels = string; ylabels([unique([data_par.value],'stable')]) = replace({data_par(indx).calibratedValue},'_',' '); plot([data_par.dateMAT], [data_par.value], '-x' ); set(gca,'ytick',unique([data_par.value],'sorted')); [~,si] = sort([data_par(indx(charind)).value]); set(gca,'yticklabel', ylabels(si) ); set(gca,'ytick',unique([data_par.value],'sorted')) set(gca,'yticklabel',ylabels) if exist('dataFigShowUpdatefcn')==2 set(datacursormode(gcf),'UpdateFcn',@dataFigShowUpdatefcn) end Loading @@ -231,10 +250,10 @@ classdef MatMust < handle plot([data_par.dateMAT], [data_par.value], '-x' ); end xlabel('time'); if isfield(data(i), 'unit') ylabel(data(i).unit); if isfield(data{1}(i), 'unit') ylabel(data{1}(i).unit); end title([data(i).description,' - ',data(i).name]); title([data{1}(i).description,' - ',data{1}(i).name]); datetick('x'); grid on end Loading @@ -249,11 +268,12 @@ classdef MatMust < handle % MatMust_searchTMparFromName(obj, namequery, dataproviders, varargin) % % dataproviders = dataprovider IdName. % namequery = The query to perform (ex. '*HGA' or 'HGA+.+state' ) % namequery = The query to perform (ex. '*HGA' ) % varargin = You can specify several options in varagin: % ex: 'dump' -> print to screen the parameters found % 'Description' -> Extend search in Parameters Descriptions % 'Id' -> Extend Search in Parameter Id % 'Unit' -> Extend Search in Unit name space % Loading @@ -264,10 +284,10 @@ classdef MatMust < handle dataproviders = char(join(dataproviders,',')); end try optindx = strcmp(varargin,'Description')+strcmp(varargin,'Id')+strcmp(dataproviders,'name'); optindx = strcmp(varargin,'Description')+strcmp(varargin,'Unit')+strcmp(varargin,'Id'); if any(find(optindx)) field = join(varargin(find(optindx)),','); response = webread([obj.url,obj.urlsub, query], 'field',[char(field)],'text',namequery,'dataproviders', dataproviders ,obj.GEToptions); response = webread([obj.url,obj.urlsub, query], 'field',['name,',char(field)],'text',namequery,'dataproviders', dataproviders ,obj.GEToptions); else response = webread([obj.url,obj.urlsub, query], 'field','name','text',namequery,'dataproviders', dataproviders ,obj.GEToptions); Loading Loading
matlab/src/classes/@MatMust/MatMust.m +43 −23 Original line number Diff line number Diff line Loading @@ -168,35 +168,51 @@ classdef MatMust < handle 'mode', 'SIMPLE'}; try data = webread([obj.url,obj.urlsub, query], args{:} ,obj.GEToptions); response = webread([obj.url,obj.urlsub, query], args{:} ,obj.GEToptions); catch ME fprintf('+++ WARNING\n%s - %s\n', ME.identifier, ME.message) return end if isa(response,'struct') data{1} = response; else data = response; end %refine date string to adapt MATLAB date format for i=1:numel(data) data_par = data(i).data; for i=1:numel(data{1}) if isempty(data{1}(i).data) fprintf('+++ WARNING\n%s for %s\n', 'No Data existing in time span', data.name) continue end data_par = data{1}(i).data; t = num2cell(datenum(datetime('1970-01-01', 'TimeZone','utc'))+(str2num(str2mat(data_par.date))/1000/86400)); [data(i).data.dateMAT] = deal(t{:}); [data{1}(i).data.dateMAT] = deal(t{:}); clear t end if nargin > 5 if any(ismember(varargin,'dump')) fprintf('+++++++++++++ DATA RESULT LIST +++++++++++++\n'); for i=1:numel(data) data_par = data(i).data; fprintf('%s-%s: %s -> %s\n', data(i).subsystem, data(i).type, data(i).name, data(i).description ); for i=1:numel(data{1}) if isempty(data{i}(i).data) continue end data_par = data{i}.data; fprintf('%s-%s: %s -> %s\n', data{1}(i).subsystem, data{1}(i).type, data{1}(i).name, data{1}(i).description ); %TODO filter for several kind of dataType 'DOUBLE', %'SIGNED_SMALL_INT', 'STRING' switch data(i).dataType switch data{1}(i).dataType case 'DOUBLE' format = '%f'; case 'SIGNED_SMALL_INT' case {'SIGNED_SMALL_INT', 'UNSIGNED_INT'} format = '%i'; case 'STRING' format = '%s'; otherwise format = '%s'; end format = ['%s - ',format,'\n']; for i = 1:numel(data_par) Loading @@ -208,19 +224,22 @@ classdef MatMust < handle fprintf('+++++++++++++++++++++++++++++++++++++++++\n'); end if any(ismember(varargin,'plot')) for i=1:numel(data) data_par = data(i).data; for i=1:numel(data{1}) if isempty(data{1}(i).data) continue end data_par = data{1}(i).data; figure title(sprintf('%s-%s: %s -> %s\n', data(i).subsystem, data(i).type, data(i).name, data(i).description )) title(sprintf('%s-%s: %s -> %s\n', data{1}(i).subsystem, data{1}(i).type, data{1}(i).name, data{1}(i).description )) if strcmp(calibrate,'true') switch class(data_par(1).calibratedValue) case 'char' indx = [1,find(diff([data_par.value])~=0)]+1; [ylabels,charind ] = unique(replace({data_par(indx).calibratedValue},'_',' '),'stable'); ylabels = string; ylabels([unique([data_par.value],'stable')]) = replace({data_par(indx).calibratedValue},'_',' '); plot([data_par.dateMAT], [data_par.value], '-x' ); set(gca,'ytick',unique([data_par.value],'sorted')); [~,si] = sort([data_par(indx(charind)).value]); set(gca,'yticklabel', ylabels(si) ); set(gca,'ytick',unique([data_par.value],'sorted')) set(gca,'yticklabel',ylabels) if exist('dataFigShowUpdatefcn')==2 set(datacursormode(gcf),'UpdateFcn',@dataFigShowUpdatefcn) end Loading @@ -231,10 +250,10 @@ classdef MatMust < handle plot([data_par.dateMAT], [data_par.value], '-x' ); end xlabel('time'); if isfield(data(i), 'unit') ylabel(data(i).unit); if isfield(data{1}(i), 'unit') ylabel(data{1}(i).unit); end title([data(i).description,' - ',data(i).name]); title([data{1}(i).description,' - ',data{1}(i).name]); datetick('x'); grid on end Loading @@ -249,11 +268,12 @@ classdef MatMust < handle % MatMust_searchTMparFromName(obj, namequery, dataproviders, varargin) % % dataproviders = dataprovider IdName. % namequery = The query to perform (ex. '*HGA' or 'HGA+.+state' ) % namequery = The query to perform (ex. '*HGA' ) % varargin = You can specify several options in varagin: % ex: 'dump' -> print to screen the parameters found % 'Description' -> Extend search in Parameters Descriptions % 'Id' -> Extend Search in Parameter Id % 'Unit' -> Extend Search in Unit name space % Loading @@ -264,10 +284,10 @@ classdef MatMust < handle dataproviders = char(join(dataproviders,',')); end try optindx = strcmp(varargin,'Description')+strcmp(varargin,'Id')+strcmp(dataproviders,'name'); optindx = strcmp(varargin,'Description')+strcmp(varargin,'Unit')+strcmp(varargin,'Id'); if any(find(optindx)) field = join(varargin(find(optindx)),','); response = webread([obj.url,obj.urlsub, query], 'field',[char(field)],'text',namequery,'dataproviders', dataproviders ,obj.GEToptions); response = webread([obj.url,obj.urlsub, query], 'field',['name,',char(field)],'text',namequery,'dataproviders', dataproviders ,obj.GEToptions); else response = webread([obj.url,obj.urlsub, query], 'field','name','text',namequery,'dataproviders', dataproviders ,obj.GEToptions); Loading