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')