Skip to content
Snippets Groups Projects
Code owners
Assign users and groups as approvers for specific file changes. Learn more.
example.m 3.10 KiB
%% Example Script
% This Script is meant to demonstrate the capabilities of the PlotID tool.

%% Clear Environment
clear; clc; close all;
addpath('CI_files'); % Test scripts

try
    delete testdata2.h5;
end


%% Set ProjectID
% ProjectID can also be set in the config file 

% TODO:  decide how projectID and optionally ORCID will be implemented
% ORCID placed on startup (alternative?) - projectID as persistent
% otherwise dialogue?

% Leave empty for using the ID from the config file
ProjectID = 'FST03';


%% Data
% Creating Random Data to use as data-file

x = linspace(0,7);
y = rand(1,100)+2;
dataset1 = 'test_data.mat';
% Use absolute paths for good practise
dataset1 = fullfile(pwd,dataset1);
save(dataset1,'x','y');


% some data as .h5
x1 = linspace(0,2*pi);
y1 = sin(x1)+2;

% define file path & name
dataset2 = 'testdata2.h5';
dataset2 = fullfile(pwd,dataset2);
fpath = dataset2;

% create hdf5 file and dataset > write data to hdf5 file / dataset
h5create(fpath, "/x1", size(x1), "Datatype", class(x1))
h5create(fpath, "/y1", size(y1), "Datatype", class(y1))
h5write(fpath, "/x1", x1)
h5write(fpath, "/y1", y1)

%% function calls
% Place for post-processing of the data, or additional related code.
a = 1;
% example_fcn is a dummy function to show the functionality
a = example_fcn(a); 
%p = betacdf(0.5,1,1); % to test Toolboxes

%% Plotting
% This is still part of a normal script to produce plots.
% Make sure to save each figure in a variable to pass to PlotID-functions.
fig(1) = figure;
plot(x,y,'-k');
box off; hold on;
plot(x1,y1,'-r');
set(gca, 'TickDir', 'out', 'YLim', [0,4]);

%% Example 1: single plot based on two data-sets

%% Tag the plot
% PlotID Implementation starts here.
% TagPlot adds a visible ID to the figure(s) and to the figures property
% 'Tag'
[fig, ID] = PlotID.TagPlot(fig, 'ProjectID', ProjectID);

%% Publishing
% Second part of plotID 
% The functions needs the file location, the location of the data and the
% figure and can take several options.
% TODO add explanations for Options

path.script = mfilename('fullpath'); % filename of the m.script
% file names of the datasets
path.rdata =  {dataset1,dataset2} ; % don't forget the extension

PlotID.Publish(path, ID, fig(1), 'Location', 'local' ,'Method','individual')

%% Example 2: multiple plots plot, all based on data-set2 (hdf5)
% for individual data-sets, use an appropriate array

fig(2) = figure;
plot(x,y,'-b');
box off; hold on;
plot(x1,y1,'--k');
set(gca, 'TickDir', 'out', 'YLim', [0,4]);

% tag both plots 
[fig, IDs] = PlotID.TagPlot(fig,'ProjectID', ProjectID);

% data locations
path.script = mfilename('fullpath'); % filename of the m.script
% file names of the datasets
path.rdata =  {dataset2} ; % don't forget the extension

% publsihing via for-loop
for i=1: numel(fig)
    PlotID.Publish(path, IDs{i}, fig(i), 'Location', 'server','Method','individual');
end

%% Second Plot with identical data to test centralized method
% ToDO Add better description

fig2 =figure;
plot(x,y,'-k');
hold on
plot(x1,y1,'-r');

[fig2, ID] = PlotID.TagPlot(fig2,'ProjectID', ProjectID);

PlotID.Publish(path, ID, fig2, 'Location', 'local','Method','centralized')