Loading matlab/src/classes/@MatMust/MatMust.m +1 −1 Original line number Diff line number Diff line Loading @@ -56,7 +56,7 @@ classdef MatMust < handle % check if user is already logged in if f > 0 raw = fread(f,inf); tockenfilejson = jsondecode(char(raw)); tockenfilejson = jsondecode(char(raw)'); if isfield(tockenfilejson,'token') & isfield(tockenfilejson,'expiresAt') if length(split(tockenfilejson.token,'.')) == 3 & datetime(datenum(tockenfilejson.expiresAt, 'yyyy-mm-dd HH:MM:SS'), 'ConvertFrom','datenum', 'TimeZone','utc') > datetime(datetime(now, 'ConvertFrom','datenum', 'TimeZone','local'), 'TimeZone','utc') obj.loginstatus = true; Loading matlab/test/classes/@MatMust/MatMust.m +54 −16 Original line number Diff line number Diff line classdef MatMust < handle %MATMUST A library to get deal with ESA webmust REST API % Follow indication in methods help. % % +++++++++++++++++++++++++++++++++++++ % Creator: Carmelo Magnafico IAPS/INAF % date: 20/06/2019 % % +++++++++++++++++++++++++++++++++++++ % MATMUST embed the first properties POSToptions Loading Loading @@ -62,7 +56,7 @@ classdef MatMust < handle % check if user is already logged in if f > 0 raw = fread(f,inf); tockenfilejson = jsondecode(char(raw)); tockenfilejson = jsondecode(char(raw)'); if isfield(tockenfilejson,'token') & isfield(tockenfilejson,'expiresAt') if length(split(tockenfilejson.token,'.')) == 3 & datetime(datenum(tockenfilejson.expiresAt, 'yyyy-mm-dd HH:MM:SS'), 'ConvertFrom','datenum', 'TimeZone','utc') > datetime(datetime(now, 'ConvertFrom','datenum', 'TimeZone','local'), 'TimeZone','utc') obj.loginstatus = true; Loading Loading @@ -139,6 +133,8 @@ classdef MatMust < handle % dateStart = 'yyyy-mm-dd HH:MM:SS' format date UTC time % dateStop = 'yyyy-mm-dd HH:MM:SS' format date UTC time % 'dump','plot' optional parameter to dump and plot the data % 'calibrated' optional parameter that specify that you want % calibrated data % intialize data output data = []; Loading @@ -155,6 +151,7 @@ classdef MatMust < handle end end if any(ismember(varargin,'calibrated')) calibrate = 'true'; else calibrate = 'false'; end query = ['dataproviders/',ds,'/parameters/data']; obj.GEToptions.HeaderFields = {'Authorization', obj.tockenstruct.token}; Loading @@ -167,7 +164,7 @@ classdef MatMust < handle 'values', (parname),... 'from', (dateStart),... 'to', (dateStop),... 'calibrate', 'false',... 'calibrate', calibrate,... 'mode', 'SIMPLE'}; try Loading Loading @@ -215,9 +212,29 @@ classdef MatMust < handle data_par = data(i).data; figure title(sprintf('%s-%s: %s -> %s\n', data(i).subsystem, data(i).type, data(i).name, data(i).description )) if strcmp(calibrate,'true') switch class(data_par(1).calibratedValue) case 'char' indx = [1,find(diff([data_par.value])~=0)]+1; 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')) set(gca,'yticklabel',ylabels) if exist('dataFigShowUpdatefcn')==2 set(datacursormode(gcf),'UpdateFcn',@dataFigShowUpdatefcn) end otherwise plot([data_par.dateMAT], [data_par.calibratedValue], '-x' ); end else plot([data_par.dateMAT], [data_par.value], '-x' ); end xlabel('time'); if isfield(data(i), 'unit') ylabel(data(i).unit); end title([data(i).description,' - ',data(i).name]); datetick('x'); grid on end Loading @@ -226,6 +243,21 @@ classdef MatMust < handle end function t = MatMust_searchTMparFromName(obj, namequery, dataproviders, varargin) % +++ % MatMust_searchTMparFromName % Search a parameter into the requested dataprovider (es. BEPICRUISE) % MatMust_searchTMparFromName(obj, namequery, dataproviders, varargin) % % dataproviders = dataprovider IdName. % 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 % if obj.loginstatus query = 'metadata/treesearch'; obj.GEToptions.HeaderFields = {'Authorization', obj.tockenstruct.token}; Loading @@ -233,13 +265,20 @@ classdef MatMust < handle dataproviders = char(join(dataproviders,',')); end try 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',['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); end t = response ; catch ME fprintf('+++ WARNING\n%s - %s\n', ME.identifier, ME.message) end if nargin > 3 if strcmp(varargin{1},'dump') if any(find(strcmp(varargin,'dump'))) fprintf('+++++++++++++ PARAMETERS QUERY RESULT LIST +++++++++++++\n'); found = false; for i = 1:numel(t) Loading @@ -259,7 +298,7 @@ classdef MatMust < handle end end end function [exit] = MatMust_login(obj, varargin ) function MatMust_login(obj, varargin ) % login % https://bepicolombo.esac.esa.int/webclient-must/mustlink/api-docs/index.html#/Authentication/login % input: Loading Loading @@ -317,7 +356,6 @@ classdef MatMust < handle MatMust_getUserLinkedProjects(obj); else exit = true; disp('user already loggen in') end Loading Loading
matlab/src/classes/@MatMust/MatMust.m +1 −1 Original line number Diff line number Diff line Loading @@ -56,7 +56,7 @@ classdef MatMust < handle % check if user is already logged in if f > 0 raw = fread(f,inf); tockenfilejson = jsondecode(char(raw)); tockenfilejson = jsondecode(char(raw)'); if isfield(tockenfilejson,'token') & isfield(tockenfilejson,'expiresAt') if length(split(tockenfilejson.token,'.')) == 3 & datetime(datenum(tockenfilejson.expiresAt, 'yyyy-mm-dd HH:MM:SS'), 'ConvertFrom','datenum', 'TimeZone','utc') > datetime(datetime(now, 'ConvertFrom','datenum', 'TimeZone','local'), 'TimeZone','utc') obj.loginstatus = true; Loading
matlab/test/classes/@MatMust/MatMust.m +54 −16 Original line number Diff line number Diff line classdef MatMust < handle %MATMUST A library to get deal with ESA webmust REST API % Follow indication in methods help. % % +++++++++++++++++++++++++++++++++++++ % Creator: Carmelo Magnafico IAPS/INAF % date: 20/06/2019 % % +++++++++++++++++++++++++++++++++++++ % MATMUST embed the first properties POSToptions Loading Loading @@ -62,7 +56,7 @@ classdef MatMust < handle % check if user is already logged in if f > 0 raw = fread(f,inf); tockenfilejson = jsondecode(char(raw)); tockenfilejson = jsondecode(char(raw)'); if isfield(tockenfilejson,'token') & isfield(tockenfilejson,'expiresAt') if length(split(tockenfilejson.token,'.')) == 3 & datetime(datenum(tockenfilejson.expiresAt, 'yyyy-mm-dd HH:MM:SS'), 'ConvertFrom','datenum', 'TimeZone','utc') > datetime(datetime(now, 'ConvertFrom','datenum', 'TimeZone','local'), 'TimeZone','utc') obj.loginstatus = true; Loading Loading @@ -139,6 +133,8 @@ classdef MatMust < handle % dateStart = 'yyyy-mm-dd HH:MM:SS' format date UTC time % dateStop = 'yyyy-mm-dd HH:MM:SS' format date UTC time % 'dump','plot' optional parameter to dump and plot the data % 'calibrated' optional parameter that specify that you want % calibrated data % intialize data output data = []; Loading @@ -155,6 +151,7 @@ classdef MatMust < handle end end if any(ismember(varargin,'calibrated')) calibrate = 'true'; else calibrate = 'false'; end query = ['dataproviders/',ds,'/parameters/data']; obj.GEToptions.HeaderFields = {'Authorization', obj.tockenstruct.token}; Loading @@ -167,7 +164,7 @@ classdef MatMust < handle 'values', (parname),... 'from', (dateStart),... 'to', (dateStop),... 'calibrate', 'false',... 'calibrate', calibrate,... 'mode', 'SIMPLE'}; try Loading Loading @@ -215,9 +212,29 @@ classdef MatMust < handle data_par = data(i).data; figure title(sprintf('%s-%s: %s -> %s\n', data(i).subsystem, data(i).type, data(i).name, data(i).description )) if strcmp(calibrate,'true') switch class(data_par(1).calibratedValue) case 'char' indx = [1,find(diff([data_par.value])~=0)]+1; 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')) set(gca,'yticklabel',ylabels) if exist('dataFigShowUpdatefcn')==2 set(datacursormode(gcf),'UpdateFcn',@dataFigShowUpdatefcn) end otherwise plot([data_par.dateMAT], [data_par.calibratedValue], '-x' ); end else plot([data_par.dateMAT], [data_par.value], '-x' ); end xlabel('time'); if isfield(data(i), 'unit') ylabel(data(i).unit); end title([data(i).description,' - ',data(i).name]); datetick('x'); grid on end Loading @@ -226,6 +243,21 @@ classdef MatMust < handle end function t = MatMust_searchTMparFromName(obj, namequery, dataproviders, varargin) % +++ % MatMust_searchTMparFromName % Search a parameter into the requested dataprovider (es. BEPICRUISE) % MatMust_searchTMparFromName(obj, namequery, dataproviders, varargin) % % dataproviders = dataprovider IdName. % 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 % if obj.loginstatus query = 'metadata/treesearch'; obj.GEToptions.HeaderFields = {'Authorization', obj.tockenstruct.token}; Loading @@ -233,13 +265,20 @@ classdef MatMust < handle dataproviders = char(join(dataproviders,',')); end try 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',['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); end t = response ; catch ME fprintf('+++ WARNING\n%s - %s\n', ME.identifier, ME.message) end if nargin > 3 if strcmp(varargin{1},'dump') if any(find(strcmp(varargin,'dump'))) fprintf('+++++++++++++ PARAMETERS QUERY RESULT LIST +++++++++++++\n'); found = false; for i = 1:numel(t) Loading @@ -259,7 +298,7 @@ classdef MatMust < handle end end end function [exit] = MatMust_login(obj, varargin ) function MatMust_login(obj, varargin ) % login % https://bepicolombo.esac.esa.int/webclient-must/mustlink/api-docs/index.html#/Authentication/login % input: Loading Loading @@ -317,7 +356,6 @@ classdef MatMust < handle MatMust_getUserLinkedProjects(obj); else exit = true; disp('user already loggen in') end Loading