diff --git a/fcn_core/CreateID.m b/+PlotID/CreateID.m
similarity index 97%
rename from fcn_core/CreateID.m
rename to +PlotID/CreateID.m
index 2579717c343c33a6a777e3458e85fb29f168325d..570a187ba40d94354edb54e8742bc100b62e3fca 100644
--- a/fcn_core/CreateID.m
+++ b/+PlotID/CreateID.m
@@ -1,24 +1,24 @@
-function [ID] = CreateID(method)
-%CreateID Creates an identifier (char)
-% Creates an (sometimes unique) identifier based on the selected method
-% if no method is selected method 1 will be the default method
-arguments
- method (1,1) {mustBeNumeric} = 1
-end
-
-switch method
- case 1 % UNIX Time in seconds as HEX
- ID = posixtime(datetime('now')); %get current Unix time
- ID = dec2hex(int32(ID)); % get it as Hex
- pause(1); %Pausing for unique IDs
- case 2 % random UUID from Java 128 bit
- %Static factory to retrieve a type 4 (pseudo randomly generated) UUID.
- % The UUID is generated using a cryptographically strong pseudo
- % random number generator.
- temp = java.util.UUID.randomUUID;
- ID = temp.toString;
- otherwise
- error('The requested method is not defined yet');
-end
-
-end
+function [ID] = CreateID(method)
+%CreateID Creates an identifier (char)
+% Creates an (sometimes unique) identifier based on the selected method
+% if no method is selected method 1 will be the default method
+arguments
+ method (1,1) {mustBeNumeric} = 1
+end
+
+switch method
+ case 1 % UNIX Time in seconds as HEX
+ ID = posixtime(datetime('now')); %get current Unix time
+ ID = dec2hex(int32(ID)); % get it as Hex
+ pause(1); %Pausing for unique IDs
+ case 2 % random UUID from Java 128 bit
+ %Static factory to retrieve a type 4 (pseudo randomly generated) UUID.
+ % The UUID is generated using a cryptographically strong pseudo
+ % random number generator.
+ temp = java.util.UUID.randomUUID;
+ ID = temp.toString;
+ otherwise
+ error('The requested method is not defined yet');
+end
+
+end
diff --git a/fcn_core/Publish.m b/+PlotID/Publish.m
similarity index 85%
rename from fcn_core/Publish.m
rename to +PlotID/Publish.m
index 75988024ce86ec9fddd9ec5ef61ebe983440f170..01eb66bea5f7b6cc0ce39b5416f0389996f5f6fe 100644
--- a/fcn_core/Publish.m
+++ b/+PlotID/Publish.m
@@ -1,115 +1,115 @@
-function Publish(DataPaths, ID, figure, options)
-%Publishes saves plot, data and measuring script
-% Location sets the storage location. 'local' sets the storage location
-% to the current folder (an export folder will be created), 'server' is a
-% remote path, that is defined in the config file.
-% Two Methods are implemented 'individual' stores the data for
-% each plot while 'centralized' uses a data folder and uses reference links
-% to the original data (hdf5 only).
-
-arguments
- DataPaths
- ID (1,:) {mustBeNonzeroLengthText} % ID must be provided
- figure (1,:) {mustBeFigure} % Checks if figure is a figure object
- options.Location {mustBeMember(options.Location ,['local','server','CI-Test'])} = 'local' % storage path
- options.Method {mustBeMember(options.Method ,['individual','centraliced'])} = 'individual'
- options.CopyUserFCN (1,1) {mustBeNumericOrLogical} = true
-end
-
-%catch multiple figures in fig
-if numel(figure) > 1
- figure = figure(1);
- msg = ['Publish is designed for handeling one figure at once' newline,...
- '- publishes uses only the first figure.' newline , ...
- 'Consider an external for loop for multi figure export as provided in example.m'];
- warning(msg);
-end
-
-switch options.Location
- case 'local'
- storPath = fullfile(pwd,'export');
- case 'server' %from config File
- txt = fileread('config.json');
- config = jsondecode(txt);
- storPath = config.ServerPath;
- case 'CI-Test'
- storPath = fullfile(pwd,'CI_files','export');
-end
-folderName = char(ID);
-
-%% Create Data-Directory
-addpath(storPath); % ToDo necessary? -
-if isfolder(fullfile(storPath,folderName))
- error(['Folder ',folderName, ' exists - Plot was already published ']);
-elseif mkdir(fullfile(storPath,folderName))
-else
- error('Directory could not be created - check remote path and permissions');
-end
-
-disp('Publishing started');
-
-%% Create a Copy of the script and User functions(optional)
-createFileCopy({[DataPaths.script,'.m']},folderName,storPath,ID, 'script');
-
-if options.CopyUserFCN
- [fList,pList] = matlab.codetools.requiredFilesAndProducts(DataPaths.script);
- % plist contains the required MATLAB Toolboxes, maybe usefull in future
- fList = fList(~ismember(fList,[DataPaths.script,'.m'])); % rmv script from list
- fList = removePltIdFiles(fList); % Do not copy files that are part of plot ID
- if ~isempty(fList)
- createFileCopy(fList,folderName,storPath,ID,'userFcn');
- end
-end
-
-%% Research data handeling
-switch options.Method
- case 'centraliced' % Work in progresss!!!
- % check if data folder exists
- if ~isfolder(fullfile(storPath,'data'))
- mkdir(fullfile(storPath,'data'));
- end
- %list all files
- fList = dir(fullfile(storPath,'data', '**\*.*')); %get list of files and folders in any subfolder
- fList = fList(~[fList.isdir]); %remove folders from list
- fList = struct2table(fList);
-
- % Check if the new plot is based on the original data-set
- % copy the data(once)
- for i=1:numel(DataPaths.rdata)
- % check if identical file exists (status = 1)
- [~, idx] = fileCompare(DataPaths.rdata{i},fList);
- % create Linked HDF5 files for identical files
- if any(idx)
- sourcePath = fList.name{idx}; % If there are multiple copies already, this only picks the last entry
- if contains(sourcePath,{'.h5','.hdf5'}) % Linking only for HDF5
- createLinkedHDF5(sourcePath,storPath,ID);
- end
- else % no identical file exists
- createFileCopy(DataPaths.rdata{i},'data',storPath,ID,'dataCentral');
- end
- end
- case 'individual'
- % Create a copy of the research data
- createFileCopy(DataPaths.rdata,folderName,storPath,ID, 'data');
-end
-%% Export the Plot
-%try
- PlotName = [ID,'_plot']; % plotname
- RemotePath = fullfile(storPath ,folderName, PlotName);
- % Matlab figure
- savefig(figure,RemotePath);
- % the png should only be a preview
- exportgraphics(figure,[RemotePath,'.png'],'Resolution',300);
-% end
-% catch
-% warning('Plot export was not successful')
-% end
-
-disp(['publishing of ', ID , ' done']);
-
-end %function
-
-function tf = mustBeFigure(h)
-%checks if input is a figure object
- tf = strcmp(get(h, 'type'), 'figure') & isa(h, 'matlab.ui.Figure');
-end
+function Publish(DataPaths, ID, figure, options)
+%Publishes saves plot, data and measuring script
+% Location sets the storage location. 'local' sets the storage location
+% to the current folder (an export folder will be created), 'server' is a
+% remote path, that is defined in the config file.
+% Two Methods are implemented 'individual' stores the data for
+% each plot while 'centralized' uses a data folder and uses reference links
+% to the original data (hdf5 only).
+
+arguments
+ DataPaths
+ ID (1,:) {mustBeNonzeroLengthText} % ID must be provided
+ figure (1,:) {mustBeFigure} % Checks if figure is a figure object
+ options.Location {mustBeMember(options.Location ,['local','server','CI-Test'])} = 'local' % storage path
+ options.Method {mustBeMember(options.Method ,['individual','centraliced'])} = 'individual'
+ options.CopyUserFCN (1,1) {mustBeNumericOrLogical} = true
+end
+
+%catch multiple figures in fig
+if numel(figure) > 1
+ figure = figure(1);
+ msg = ['Publish is designed for handeling one figure at once' newline,...
+ '- publishes uses only the first figure.' newline , ...
+ 'Consider an external for loop for multi figure export as provided in example.m'];
+ warning(msg);
+end
+
+switch options.Location
+ case 'local'
+ storPath = fullfile(pwd,'export');
+ case 'server' %from config File
+ txt = fileread('config.json');
+ config = jsondecode(txt);
+ storPath = config.ServerPath;
+ case 'CI-Test'
+ storPath = fullfile(pwd,'CI_files','export');
+end
+folderName = char(ID);
+
+%% Create Data-Directory
+addpath(storPath); % ToDo necessary? -
+if isfolder(fullfile(storPath,folderName))
+ error(['Folder ',folderName, ' exists - Plot was already published ']);
+elseif mkdir(fullfile(storPath,folderName))
+else
+ error('Directory could not be created - check remote path and permissions');
+end
+
+disp('Publishing started');
+
+%% Create a Copy of the script and User functions(optional)
+PlotID.createFileCopy({[DataPaths.script,'.m']},folderName,storPath,ID, 'script');
+
+if options.CopyUserFCN
+ [fList,pList] = matlab.codetools.requiredFilesAndProducts(DataPaths.script);
+ % plist contains the required MATLAB Toolboxes, maybe usefull in future
+ fList = fList(~ismember(fList,[DataPaths.script,'.m'])); % rmv script from list
+ fList = PlotID.removePltIdFiles(fList); % Do not copy files that are part of plot ID
+ if ~isempty(fList)
+ PlotID.createFileCopy(fList,folderName,storPath,ID,'userFcn');
+ end
+end
+
+%% Research data handeling
+switch options.Method
+ case 'centraliced' % Work in progresss!!!
+ % check if data folder exists
+ if ~isfolder(fullfile(storPath,'data'))
+ mkdir(fullfile(storPath,'data'));
+ end
+ %list all files
+ fList = dir(fullfile(storPath,'data', '**\*.*')); %get list of files and folders in any subfolder
+ fList = fList(~[fList.isdir]); %remove folders from list
+ fList = struct2table(fList);
+
+ % Check if the new plot is based on the original data-set
+ % copy the data(once)
+ for i=1:numel(DataPaths.rdata)
+ % check if identical file exists (status = 1)
+ [~, idx] = PlotID.fileCompare(DataPaths.rdata{i},fList);
+ % create Linked HDF5 files for identical files
+ if any(idx)
+ sourcePath = fList.name{idx}; % If there are multiple copies already, this only picks the last entry
+ if contains(sourcePath,{'.h5','.hdf5'}) % Linking only for HDF5
+ PlotID.createLinkedHDF5(sourcePath,storPath,ID);
+ end
+ else % no identical file exists
+ PlotID.createFileCopy(DataPaths.rdata{i},'data',storPath,ID,'dataCentral');
+ end
+ end
+ case 'individual'
+ % Create a copy of the research data
+ PlotID.createFileCopy(DataPaths.rdata,folderName,storPath,ID, 'data');
+end
+%% Export the Plot
+%try
+ PlotName = [ID,'_plot']; % plotname
+ RemotePath = fullfile(storPath ,folderName, PlotName);
+ % Matlab figure
+ savefig(figure,RemotePath);
+ % the png should only be a preview
+ exportgraphics(figure,[RemotePath,'.png'],'Resolution',300);
+% end
+% catch
+% warning('Plot export was not successful')
+% end
+
+disp(['publishing of ', ID , ' done']);
+
+end %function
+
+function tf = mustBeFigure(h)
+%checks if input is a figure object
+ tf = strcmp(get(h, 'type'), 'figure') & isa(h, 'matlab.ui.Figure');
+end
diff --git a/fcn_core/TagPlot.m b/+PlotID/TagPlot.m
similarity index 95%
rename from fcn_core/TagPlot.m
rename to +PlotID/TagPlot.m
index 0032a89e4c9da4050a09ae4eed29d2c2e3f96542..26aee3e987daed7c39f29283c410e9a81cf056fe 100644
--- a/fcn_core/TagPlot.m
+++ b/+PlotID/TagPlot.m
@@ -1,83 +1,83 @@
-function [figs, IDs] = TagPlot(figs, options)
-%TagPlot adds IDs to figures
-% The ID is placed visual on the figure window and as Tag (property of figure)
-% TagPlot can tag multiple figures at once.
-% If a single Plot is taged IDs is a char, otherwise it is a cell array of
-% chars
-% options.ProjectID is the project number (string or char), if empty the ID from the
-% config file is used
-%
-% The ID is placed on the 'east' per default, if you want it somwhere
-% else, use the 'Location' option. 'north','east','south','west' are
-% predefined, otherwise use the 'custom' option and provide the desired
-% 'Position' (relative to your x- and y-axis limits)
-arguments
- figs (1,:) {mustBeFigure}
- options.ProjectID (1,:) {mustBeText}= ''
- options.Fontsize (1,1) {mustBeInteger} = 8
- options.Location (1,:) {mustBeText} = 'east'
- options.Position (1,2) {mustBeVector} = [1,0.4] % default for east
- options.Rotation (1,1) {mustBeInteger} = 0
-end
-
-if isempty(options.ProjectID)
- txt = fileread('config.json');
- config = jsondecode(txt);
- if ~isempty(config.ProjectID)
- options.ProjectID = config.ProjectID;
- else
- warning('no project options.ProjectID defined')
- end
-end
-
-switch options.Location
- case 'north'
- options.Position = [0.4,0.95];
- options.Rotation = 0;
- case 'east'
- options.Position = [1,0.4];
- options.Rotation = 90;
- case 'south'
- options.Position = [0.4,.02];
- options.Rotation = 0;
- case 'west'
- options.Position = [.05,0.4];
- options.Rotation = 90;
- case 'custom'
- % Check if Position is valid
- if ~all(0 <= options.Position & options.Position <= 1)
- options.Position = [1,0.4];
- warning('options.Position is not valid, TagPlot default values instead');
- end
- otherwise % set default position
- warning([options.Location, ' is not a defined location, TagPlot uses location east instead']);
- options.Location = 'east'; options.Position = [1,0.4];
-end
-
-IDs = cell(numel(figs),1);
-
-for n = 1:numel(figs)
- IDs{n} = CreateID; % Create ID
- IDs{n} = [options.ProjectID,'-',IDs{n}]; % add options.ProjectID
- axes = get(figs(n),'CurrentAxes'); % Axes object for text annotation
- % Limits for relative Positioning
- ylim =get(axes,'YLim');
- xlim =get(axes,'XLim');
- %ID
- position = [options.Position(1)*xlim(2), options.Position(2)*ylim(2)];
- text(axes,position(1),position(2), IDs{n},'Fontsize',options.Fontsize,...
- 'Rotation',options.Rotation, 'VerticalAlignment','bottom','Color',...
- 0.65*[1 1 1],'BackgroundColor','w');
- set(figs(n),'Tag', IDs{n});
-end
-
-if numel(figs) == 1
- % use char instead of a cell arry for a single ID
- IDs = IDs{1};
-end
-
-end
-
-function tf = mustBeFigure(h) %checks if input is a figure object
- tf = strcmp(get(h, 'type'), 'figure') & isa(h, 'matlab.ui.Figure');
-end
+function [figs, IDs] = TagPlot(figs, options)
+%TagPlot adds IDs to figures
+% The ID is placed visual on the figure window and as Tag (property of figure)
+% TagPlot can tag multiple figures at once.
+% If a single Plot is taged IDs is a char, otherwise it is a cell array of
+% chars
+% options.ProjectID is the project number (string or char), if empty the ID from the
+% config file is used
+%
+% The ID is placed on the 'east' per default, if you want it somwhere
+% else, use the 'Location' option. 'north','east','south','west' are
+% predefined, otherwise use the 'custom' option and provide the desired
+% 'Position' (relative to your x- and y-axis limits)
+arguments
+ figs (1,:) {mustBeFigure}
+ options.ProjectID (1,:) {mustBeText}= ''
+ options.Fontsize (1,1) {mustBeInteger} = 8
+ options.Location (1,:) {mustBeText} = 'east'
+ options.Position (1,2) {mustBeVector} = [1,0.4] % default for east
+ options.Rotation (1,1) {mustBeInteger} = 0
+end
+
+if isempty(options.ProjectID)
+ txt = fileread('config.json');
+ config = jsondecode(txt);
+ if ~isempty(config.ProjectID)
+ options.ProjectID = config.ProjectID;
+ else
+ warning('no project options.ProjectID defined')
+ end
+end
+
+switch options.Location
+ case 'north'
+ options.Position = [0.4,0.95];
+ options.Rotation = 0;
+ case 'east'
+ options.Position = [1,0.4];
+ options.Rotation = 90;
+ case 'south'
+ options.Position = [0.4,.02];
+ options.Rotation = 0;
+ case 'west'
+ options.Position = [.05,0.4];
+ options.Rotation = 90;
+ case 'custom'
+ % Check if Position is valid
+ if ~all(0 <= options.Position & options.Position <= 1)
+ options.Position = [1,0.4];
+ warning('options.Position is not valid, TagPlot default values instead');
+ end
+ otherwise % set default position
+ warning([options.Location, ' is not a defined location, TagPlot uses location east instead']);
+ options.Location = 'east'; options.Position = [1,0.4];
+end
+
+IDs = cell(numel(figs),1);
+
+for n = 1:numel(figs)
+ IDs{n} = PlotID.CreateID; % Create ID
+ IDs{n} = [options.ProjectID,'-',IDs{n}]; % add options.ProjectID
+ axes = get(figs(n),'CurrentAxes'); % Axes object for text annotation
+ % Limits for relative Positioning
+ ylim =get(axes,'YLim');
+ xlim =get(axes,'XLim');
+ %ID
+ position = [options.Position(1)*xlim(2), options.Position(2)*ylim(2)];
+ text(axes,position(1),position(2), IDs{n},'Fontsize',options.Fontsize,...
+ 'Rotation',options.Rotation, 'VerticalAlignment','bottom','Color',...
+ 0.65*[1 1 1],'BackgroundColor','w');
+ set(figs(n),'Tag', IDs{n});
+end
+
+if numel(figs) == 1
+ % use char instead of a cell arry for a single ID
+ IDs = IDs{1};
+end
+
+end
+
+function tf = mustBeFigure(h) %checks if input is a figure object
+ tf = strcmp(get(h, 'type'), 'figure') & isa(h, 'matlab.ui.Figure');
+end
diff --git a/fcn_help/createFileCopy.m b/+PlotID/createFileCopy.m
similarity index 97%
rename from fcn_help/createFileCopy.m
rename to +PlotID/createFileCopy.m
index 4bf198e429c269dbdc75f42e846f4e416b3a0130..f8fb6f87ccb78dfbed207ca21cef2a2779a770d6 100644
--- a/fcn_help/createFileCopy.m
+++ b/+PlotID/createFileCopy.m
@@ -1,52 +1,52 @@
-function [] = createFileCopy(filePaths,folderName,storPath,ID,type)
-% Creates a copy of the files (can be used for multiple paths in a cell array)
-% folderName is the name of the exporting folder
- disp(['start to copy ', type]);
-
- if ~iscell(filePaths)
- %fixes Issue if Filepath is a char and not a cell array
- filePaths = {filePaths};
- end
-
- try
- for i = 1:numel(filePaths)
- FileNameAndLocation = filePaths{i};
- [~,name,ext] = fileparts(filePaths{i}); % get the extension
-
- switch type
- case 'data'
- sufix = '_data';
- newfile = sprintf([ID, sufix, '_' , num2str(i) ,ext]);
- case 'dataCentral'
- %keep original name
- newfile = sprintf([name,ext]);
- case 'script'
- sufix = '_script';
- newfile = sprintf([ID, sufix ,ext]);
- case 'userFcn'
- %keep original name
- newfile = sprintf([name,ext]);
- otherwise
- error([type,' is not a valid type for createFileCopy'])
- end %switch
-
- % Write the file
- RemotePath = fullfile(storPath,folderName, newfile);
-
-% Check if remote file already exists
- count = 0;
- while isfile(RemotePath) && ismember(type,{'data','dataCentral'})
- % Add a Sufix number to new file name
- count = count + 1;
- [~,name,ext] = fileparts(RemotePath);
- RemotePath = fullfile(storPath,folderName,...
- [name,'_',num2str(count),ext]);
- end
- copyfile(FileNameAndLocation,RemotePath);
- end
- disp([type, ' sucessfully published']);
- catch
- warning([type,' export was not sucessful'])
- end %try
-end
-
+function [] = createFileCopy(filePaths,folderName,storPath,ID,type)
+% Creates a copy of the files (can be used for multiple paths in a cell array)
+% folderName is the name of the exporting folder
+ disp(['start to copy ', type]);
+
+ if ~iscell(filePaths)
+ %fixes Issue if Filepath is a char and not a cell array
+ filePaths = {filePaths};
+ end
+
+ try
+ for i = 1:numel(filePaths)
+ FileNameAndLocation = filePaths{i};
+ [~,name,ext] = fileparts(filePaths{i}); % get the extension
+
+ switch type
+ case 'data'
+ sufix = '_data';
+ newfile = sprintf([ID, sufix, '_' , num2str(i) ,ext]);
+ case 'dataCentral'
+ %keep original name
+ newfile = sprintf([name,ext]);
+ case 'script'
+ sufix = '_script';
+ newfile = sprintf([ID, sufix ,ext]);
+ case 'userFcn'
+ %keep original name
+ newfile = sprintf([name,ext]);
+ otherwise
+ error([type,' is not a valid type for createFileCopy'])
+ end %switch
+
+ % Write the file
+ RemotePath = fullfile(storPath,folderName, newfile);
+
+% Check if remote file already exists
+ count = 0;
+ while isfile(RemotePath) && ismember(type,{'data','dataCentral'})
+ % Add a Sufix number to new file name
+ count = count + 1;
+ [~,name,ext] = fileparts(RemotePath);
+ RemotePath = fullfile(storPath,folderName,...
+ [name,'_',num2str(count),ext]);
+ end
+ copyfile(FileNameAndLocation,RemotePath);
+ end
+ disp([type, ' sucessfully published']);
+ catch
+ warning([type,' export was not sucessful'])
+ end %try
+end
+
diff --git a/fcn_help/createLinkedHDF5.m b/+PlotID/createLinkedHDF5.m
similarity index 96%
rename from fcn_help/createLinkedHDF5.m
rename to +PlotID/createLinkedHDF5.m
index 2738fd173b7e00ed36cadad45912c79246c6a872..ea59760ecec0219ac4a2ac07476f7c913ccc7c51 100644
--- a/fcn_help/createLinkedHDF5.m
+++ b/+PlotID/createLinkedHDF5.m
@@ -1,20 +1,20 @@
-function [status] = createLinkedHDF5(SourceFile,TargetPath,ID)
-%createLinkedHDF5 creates a HDF file that references the Sourcefile
-% TargetPath is the storage location, ID the foldername
-% Status returns true if the function was sucessfull
-
-plist_id = 'H5P_DEFAULT';
-
-% try
- fid = H5F.create(fullfile(TargetPath,ID,[ID,'_data.h5']));
- %create External Link to Sourcefile in the Group linkToExternal
- H5L.create_external(['..\data\',SourceFile],'/',fid, SourceFile ,plist_id,plist_id);
- H5F.close(fid);
- status = 1;
-% catch
-% warning('No linked HDF file was created');
-% status = 0;
-% end
-
-end
-
+function [status] = createLinkedHDF5(SourceFile,TargetPath,ID)
+%createLinkedHDF5 creates a HDF file that references the Sourcefile
+% TargetPath is the storage location, ID the foldername
+% Status returns true if the function was sucessfull
+
+plist_id = 'H5P_DEFAULT';
+
+% try
+ fid = H5F.create(fullfile(TargetPath,ID,[ID,'_data.h5']));
+ %create External Link to Sourcefile in the Group linkToExternal
+ H5L.create_external(['..\data\',SourceFile],'/',fid, SourceFile ,plist_id,plist_id);
+ H5F.close(fid);
+ status = 1;
+% catch
+% warning('No linked HDF file was created');
+% status = 0;
+% end
+
+end
+
diff --git a/fcn_help/fileCompare.m b/+PlotID/fileCompare.m
similarity index 96%
rename from fcn_help/fileCompare.m
rename to +PlotID/fileCompare.m
index 8026faaa3e0637783e7ede5f02800e7185485dae..91cabb05214e3eac2354feefe146fc827c86ca0a 100644
--- a/fcn_help/fileCompare.m
+++ b/+PlotID/fileCompare.m
@@ -1,49 +1,49 @@
-function [status, id] = fileCompare(filename,fileList)
-%fileCompare checks if file1 is (binary) identical to a file in filelist
-% it returns a sttus and the id of the identical file
-% the functions uses the windows system function fc or the unix function
-% diff
-
-if isempty(fileList)
- % no comparison necessary
- status =false;
- id = 0;
- return
-end
-
-[~,~,ext1] = fileparts(filename);
-id = zeros(height(fileList),1);
-
-for i=1:height(fileList)
- [~,~,ext2] = fileparts(fileList{i,'name'});
-
- if ~isequal(ext1,ext2)
- %warning('File extension are not identical');
- status = false;
- continue
- end
-
- filepath = fullfile(fileList{i,'folder'},fileList{i,'name'});
- if ispc
- [status,~] = system(['fc ' filename ' ' char(filepath)]);
- % 0 -> identical, 1 -> not identical
- status = ~status; % false (not identical), true(identical)
-
- elseif isunix %untested!
- [status,~] = system(['diff ' filename ' ' filepath]);
- else
- warning('Platform not supported')
- end
-
- if status == 1
- id(i) = 1;
- else
- % Status can also be any other number e.g. 2
- id(i) = 0;
- end
-
- id =logical(id); %bugfix
-end
-
-end
-
+function [status, id] = fileCompare(filename,fileList)
+%fileCompare checks if file1 is (binary) identical to a file in filelist
+% it returns a sttus and the id of the identical file
+% the functions uses the windows system function fc or the unix function
+% diff
+
+if isempty(fileList)
+ % no comparison necessary
+ status =false;
+ id = 0;
+ return
+end
+
+[~,~,ext1] = fileparts(filename);
+id = zeros(height(fileList),1);
+
+for i=1:height(fileList)
+ [~,~,ext2] = fileparts(fileList{i,'name'});
+
+ if ~isequal(ext1,ext2)
+ %warning('File extension are not identical');
+ status = false;
+ continue
+ end
+
+ filepath = fullfile(fileList{i,'folder'},fileList{i,'name'});
+ if ispc
+ [status,~] = system(['fc ' filename ' ' char(filepath)]);
+ % 0 -> identical, 1 -> not identical
+ status = ~status; % false (not identical), true(identical)
+
+ elseif isunix %untested!
+ [status,~] = system(['diff ' filename ' ' filepath]);
+ else
+ warning('Platform not supported')
+ end
+
+ if status == 1
+ id(i) = 1;
+ else
+ % Status can also be any other number e.g. 2
+ id(i) = 0;
+ end
+
+ id =logical(id); %bugfix
+end
+
+end
+
diff --git a/fcn_help/FriendlyID.m b/+PlotID/friendlyID.m
similarity index 91%
rename from fcn_help/FriendlyID.m
rename to +PlotID/friendlyID.m
index e18834b71304e4fa575cef824a78c1e195d16c8f..cdac106b417794cf287ea9cab706741a4bb25b9c 100644
--- a/fcn_help/FriendlyID.m
+++ b/+PlotID/friendlyID.m
@@ -1,4 +1,4 @@
-function [IDf,PrjID, Str] = FriendlyID(ID)
+function [IDf,PrjID, Str] = friendlyID(ID)
%FriendlyID Changes the Hex Number to a human friendly datetime and dateStr
% IDf ID as DateTime Object, PrjID returns the ProjectID, Str returns the
% timestamp as String
diff --git a/fcn_help/removePltIdFiles.m b/+PlotID/removePltIdFiles.m
similarity index 86%
rename from fcn_help/removePltIdFiles.m
rename to +PlotID/removePltIdFiles.m
index 3080c22985474f8d2227e2bd62c17ecbd6f3163f..98e83b340440da6ca0ca9d2f9b5e843d30dd928d 100644
--- a/fcn_help/removePltIdFiles.m
+++ b/+PlotID/removePltIdFiles.m
@@ -1,19 +1,19 @@
-function [fListClean] = removePltIdFiles(fList)
-%removePltIdFiles removes functions that are part of PlotID out of flist
-% Detailed explanation goes here
-%addpath('..\fcn_core');
-
-[~,names,ext] = fileparts(fList);
-names = strcat(names, ext); % add ext for comparison
-
-% Get a list of all .m files that are part of Plot id
-PltID_flist = struct2table([dir('fcn_help'); dir('fcn_core')]); %get list of files
-[~,~,PltID_flist.ext(:)] = fileparts(PltID_flist.name(:)); % add ext column
-
-PltID_flist = PltID_flist(strcmp(PltID_flist.ext,'.m'),:);
-
-% Comparison and filter
-fListClean = fList(~ismember(names,PltID_flist.name));
-
-end
-
+function [fListClean] = removePltIdFiles(fList)
+%removePltIdFiles removes functions that are part of PlotID out of flist
+% Detailed explanation goes here
+%addpath('..\fcn_core');
+
+[~,names,ext] = fileparts(fList);
+names = strcat(names, ext); % add ext for comparison
+
+% Get a list of all .m files that are part of Plot id
+PltID_flist = struct2table(dir('+PlotID')); %get list of files
+[~,~,PltID_flist.ext(:)] = fileparts(PltID_flist.name(:)); % add ext column
+
+PltID_flist = PltID_flist(strcmp(PltID_flist.ext,'.m'),:);
+
+% Comparison and filter
+fListClean = fList(~ismember(names,PltID_flist.name));
+
+end
+
diff --git a/CI_files/default_test.m b/CI_files/default_test.m
index c25bd9765dde84021399fd11ca9a415175f5e49b..3d1f20cf2420bac03b5f90a4ec7d1da38b21c49a 100644
--- a/CI_files/default_test.m
+++ b/CI_files/default_test.m
@@ -3,7 +3,6 @@ function [result] = default_test()
% Detailed explanation goes here
clear; clc; close all;
-addpath('./fcn_core','./fcn_help');
% clean up, if previous run failed
try
@@ -41,7 +40,7 @@ plot(x1,y1,'-r');
%% Tag the plot
try
- [figs, ID] = TagPlot(fig,'ProjectID', ProjectID);
+ [figs, ID] = PlotID.TagPlot(fig,'ProjectID', ProjectID);
%% call a dummy function
a=1;
@@ -56,7 +55,7 @@ try
% file name of the data
path.rdata = {dataset1,dataset2} ; % don't forget the extension
- Publish(path, ID, figs, 'Location', 'CI-Test')
+ PlotID.Publish(path, ID, figs, 'Location', 'CI-Test')
% clean up
delete CI_files/export/* CI_files/*.mat CI_files/*.h5
diff --git a/example.m b/example.m
index ebdaf1200d302f539410a447d063de309cbc4b37..8587451f65744158b09a3707553b30e1bc19fc0b 100644
--- a/example.m
+++ b/example.m
@@ -3,7 +3,6 @@
%% Clear Environment
clear; clc; close all;
-addpath('fcn_core','fcn_help');
addpath('CI_files'); % Test scripts
try
@@ -66,7 +65,7 @@ set(gca, 'TickDir', 'out', 'YLim', [0,4]);
% PlotID Implementation starts here.
% TagPlot adds a visible ID to the figure(s) and to the figures property
% 'Tag'
-[fig, ID] = TagPlot(fig, 'ProjectID', ProjectID);
+[fig, ID] = PlotID.TagPlot(fig, 'ProjectID', ProjectID);
%% Publishing
% Second part of plotID
@@ -78,7 +77,7 @@ path.script = mfilename('fullpath'); % filename of the m.script
% file names of the datasets
path.rdata = {dataset1,dataset2} ; % don't forget the extension
-Publish(path, ID, fig(1), 'Location', 'local','Method','centraliced')
+PlotID.Publish(path, ID, fig(1), 'Location', 'local','Method','centraliced')
%% Example 2: multiple plots plot, all based on data-set2 (hdf5)
% for individual data-sets, use an appropriate array
@@ -90,7 +89,7 @@ plot(x1,y1,'--k');
set(gca, 'TickDir', 'out', 'YLim', [0,4]);
% tag both plots
-[fig, IDs] = TagPlot(fig,'ProjectID', ProjectID);
+[fig, IDs] = PlotID.TagPlot(fig,'ProjectID', ProjectID);
% data locations
path.script = mfilename('fullpath'); % filename of the m.script
@@ -99,8 +98,7 @@ path.rdata = {dataset2} ; % don't forget the extension
% publsihing via for-loop
for i=1: numel(fig)
- disp(string(i));
- Publish(path, IDs{i}, fig(i), 'Location', 'local','Method','centraliced');
+ PlotID.Publish(path, IDs{i}, fig(i), 'Location', 'local','Method','centraliced');
end
%% Second Plot with identical data to test centralized method
@@ -111,6 +109,6 @@ plot(x,y,'-k');
hold on
plot(x1,y1,'-r');
-[fig2, ID] = TagPlot(fig2,'ProjectID', ProjectID);
+[fig2, ID] = PlotID.TagPlot(fig2,'ProjectID', ProjectID);
-Publish(path, ID, fig2, 'Location', 'local','Method','centraliced')
\ No newline at end of file
+PlotID.Publish(path, ID, fig2, 'Location', 'local','Method','centraliced')
\ No newline at end of file