diff --git a/+PlotID/@config/config.m b/+PlotID/@config/config.m index db8d1110bc5fcfa28700d1178dcbe9035d6e18ef..efb0f4e3ca3a1e232375e2c04dad7cbfde6a2271 100644 --- a/+PlotID/@config/config.m +++ b/+PlotID/@config/config.m @@ -1,8 +1,7 @@ classdef config < handle - %CONFIG class handles methoths and attributes related to the config + %CONFIG class handles methods and attributes related to the config %file - % Detailed explanation goes here - % handle class used for dynamicy property updates + %handle class used for dynamicy property updates properties (SetAccess = private) mandatoryFields = {'Author', 'ProjectID'} @@ -19,7 +18,8 @@ classdef config < handle methods function obj = config(configFileName) %CONFIG Construct an instance of this class - % Detailed explanation goes here + % reads config data from config file, if an error occurs the + % wizard is started by the catch block obj.configFileName = configFileName; try txt = fileread(obj.configFileName); @@ -62,18 +62,12 @@ classdef config < handle end function configData = addPublishOptions(obj,mode) - %writeConfig writes the config file to path - % TODo; + %addPublishOptions adds the publsih options to the config + %object depending on the mode obj.configData.options = obj.plotID_options(mode); cpath = fileparts(obj.configPath); obj.writeConfig(cpath); - end - - function outputArg = method1(obj,inputArg) - %METHOD1 Summary of this method goes here - % Detailed explanation goes here - outputArg = obj.Property1 + inputArg; - end + end end diff --git a/+PlotID/@config/plotID_options.m b/+PlotID/@config/plotID_options.m index 235f1cb791ef0484873d32a2883aae5daf387406..aaa2f918802ae73342e723c7304de88a9200750a 100644 --- a/+PlotID/@config/plotID_options.m +++ b/+PlotID/@config/plotID_options.m @@ -1,6 +1,6 @@ function [options] = plotID_options(input) -%PLOTID_OPTIONS Summary of this function goes here -% Detailed explanation goes here +%PLOTID_OPTIONS gives you a struct with all the options defined in publish +% Two modes are implemented default and debug options = struct(); switch input diff --git a/+PlotID/@userDLG/userDLG.m b/+PlotID/@userDLG/userDLG.m index 0052a88804903b22c9bcf3f7b2267380ce41e818..3e7cbf43497a53b3f94b5520c4fa450a2948fe9d 100644 --- a/+PlotID/@userDLG/userDLG.m +++ b/+PlotID/@userDLG/userDLG.m @@ -38,8 +38,7 @@ classdef userDLG end function obj = set.msg(obj,message) - %setmsg Summary of this method goes here - % Detailed explanation goes here + %setmsg sets a message text obj.msg = message; end @@ -83,12 +82,6 @@ classdef userDLG error(message); end end - - function outputArg = method1(obj,inputArg) - %METHOD1 Summary of this method goes here - % Detailed explanation goes here - outputArg = obj.Property1 + inputArg; - end end end diff --git a/CITATION.cff b/CITATION.cff index 6c8e17a380a65867c2de3888abcc23f8d09d4f8f..54312fbdd41a9d06ba6cc453bb3d2cd71a5474fb 100644 --- a/CITATION.cff +++ b/CITATION.cff @@ -16,3 +16,4 @@ authors: family-names: Hock email: martin.hock@fst.tu-darmstadt.de affiliation: 'Chair of Fluid Systems, TU Darmstadt' + orcid: ' https://orcid.org/0000-0001-9917-3152' diff --git a/Examples/createExampleData.m b/Examples/createExampleData.m index 1f98926fd7404afe282a266eb238b2017b4d17ad..d2a1359313f054f289352c0aa85d265278fad5ad 100644 --- a/Examples/createExampleData.m +++ b/Examples/createExampleData.m @@ -1,6 +1,8 @@ function [x,y, fpath] = createExampleData(option) -%CREATEEXAMPLEDATA creates x,y Data needed for all PlotID Examples -% fpath contains the file path of the example data +%CREATEEXAMPLEDATA creates x,y data needed for the PlotID examples +% fpath contains the file path of the example data +% there are two options, the option 'matlab' creates a matlab file and the +% hdf option a hdf5 file switch option case 'hdf' @@ -22,7 +24,7 @@ switch option h5write(fpath, "/x", x) h5write(fpath, "/y", y) case 'matlab' - % Creating Random Data to use as data-file + % Creating random data to use as data-file x = linspace(0,7); y = rand(1,100)+2; dataset = 'test_data.mat'; % Use absolute paths for good practise diff --git a/PlotID_example.m b/PlotID_example.m index d4def8646cd7632f6923ae5fbf8cca7bf02e4598..c2eb0ab518a4bde051802c9bdb6c1b03c1676298 100644 --- a/PlotID_example.m +++ b/PlotID_example.m @@ -1,7 +1,7 @@ %% Example Script -% This Script is meant to demonstrate the capabilities of the PlotID tool. -% please run Initilisation.m before first time usage -%% Clear an set Environment +% This Script is ment to demonstrate the capabilities of the PlotID tool. +% please run Initilisation.m before first time use +%% Clear and set Environment clear; clc; close all; addpath('Examples'); @@ -55,7 +55,7 @@ fig2 = figure; plot(x,y,'-k'); box off; set(gca, 'TickDir', 'out', 'YLim', [0,4] scriptPath = [mfilename('fullpath'),'.m']; % file paths of the datasets used for the plot (don't forget the extension) -% datapath = test_data.mat +% datapath = 'test_data.mat'; locations = datapath; %call publish @@ -66,7 +66,7 @@ PlotID.Publish(locations,scriptPath, fig2) %% Further examples and help % You find more examples in the Examples folder: -% Advanced Usage +% Advanced usage % Working with HDF5-files % Using a central data folder % How to use advanced config-files \ No newline at end of file diff --git a/README.md b/README.md index 342cf55fc3bc97c07fcf011bc7ef83f2b9744015..340377aba750971e229a09430defcc4dc614f008 100644 --- a/README.md +++ b/README.md @@ -1,9 +1,7 @@ **PlotID** -`PlotID` is a toolkit that labels your plots and figures and copies all associated data (research data, plotting script, user-functions and a copy of the figure) to the desired location. - -This version of `PlotID` is build for `MATLAB`. - +`PlotID` is a toolkit that labels your plots and figures and copies all associated data (research data, plotting script, user-functions and a copy of the figure) to the desired location.\ +This version of `PlotID` is build for `MATLAB`. \ `PlotID` provides two core functions **TagPlot** and **Publish** which are described in detail below. Feel free to give feedback and feature requests or to take part in the development process. @@ -13,19 +11,25 @@ Feel free to give feedback and feature requests or to take part in the developme # Quick User Guide **Requirements:** MATLAB R2021a or newer -`PlotID` works in two Steps: +**First use:** +1. Put your PlotID folder in you [userpath](https://uk.mathworks.com/help/matlab/ref/userpath.html) on Windows this is +`C:\Users\USERNAME\Documents\MATLAB`. \ +When using a diffrent folder, make sure the folder is on your [search path](https://uk.mathworks.com/help/matlab/matlab_env/add-remove-or-reorder-folders-on-the-search-path.html). -1. tagging the plot -`[figs, IDs] = plotId.TagPlot(figs, options)` -You should either set a ProjectID in the config.json (copy & rename the 'example-config.json' to 'config.json'), or pass it as option 'ProjectID' to the TagPlot function. +2. Run `Initialisation.m` and follow the command line instructions.\ +The **ProjectID** is your custom project number, it well be the prefix of the ID created by `PlotID` (e.g. JL-001). Save your config file. -2. publish the plot and the associated data -`plotID.Publish(DataPaths,scriptPath, figure, options)` +**Intended use:**\ +`PlotID` works in two Steps: + +1. Tag the plot +`[figs, IDs] = PlotId.TagPlot(figs, options)` -`scriptPath` contains the path to the script, this can be provided with the simple call of `scriptPath = [mfilename('fullpath'),'.m']`, note that - **the extension is mandatory.** +2. Publish the plot and the associated data +`PlotID.Publish(DataPaths,scriptPath, figure, options)` -`DataPaths` contains the path(s) to the research data, for multiple files you can use a cell arrays (they must be at the path). +`scriptPath` contains the path to the script, this can be provided with the simple call of `scriptPath = [mfilename('fullpath'),'.m']` \ +`DataPaths` contains the path(s) to the research data, for multiple files you can use a cell arrays (they must be at the path). \ `figure` is the figure that should be published. @@ -102,15 +106,55 @@ fileCompare checks if file1 is (binary) identical to a file in filelist, it retu removePltIdFiles removes functions that are part of PlotID out of flist. # How to use the .config file -The config file is a JSON-File. At the moment two options can be set in the config file, the project ID and the remote Path. +The config file is a JSON-File. The config file stores user data and options of `PlotID`. It will be created when you use PlotID for the first time. Follow the Instructions to create the file. _Note:_ for basic usage no manual changes on the config file are required. \ + +**Note:** If you mess up your config-file simply delete it, PlotID will create a new one the next time you use it. + +## Define an export path +If you define an export path in the config.json this path is used as location for the exported data. + +## Store custom options for Publish +**add custom publish options to the config file** \ +you can define your custom options for publish in the config file. **Important:** They will always have priority against Name-Value pairs! + + +``` +configFileName = 'config.json'; +configObj = PlotID.config(configFileName); +``` +This method adds the default config to your config file +``` +configObj.addPublishOptions('default'); +``` + +You can change the options in the json file, but be carefull no argumentValidation will be done on options from the config file! + +## Working with multiple (project dependend) config files + +<details><summary> Expand </summary> +It is possible to use individual config files for each project (configP1.json, configP2.json, ...) \ + +1. Create a new config file programatically +``` +customConfigFileName = 'configP1.json'; +configObj = PlotID.config(customConfigFileName); +configObj.addPublishOptions('default'); +``` + +2. Use the custom Config +you need to provide the name of your custom config file to tagplot as well as to publish by using the Name-Value Pair: +` 'ConfigFileName','YOURNAME.json'` : ``` -{ - "ProjectID": "your ProjectID", - "ServerPath": "\\\\Server\\Folder1\\Subfolder" -} + [figs, IDs] = PlotID.TagPlot(figs, 'ConfigFileName','configP1.json'); + Publish(DataPaths,scriptPath, 'ConfigFileName','configP1.json') ``` +</details> + +# Aknowledgements +The authors would like to thank the Federal Government and the Heads of Government of the Länder, as well as the Joint Science Conference (GWK), for their funding and support within the framework of the NFDI4Ing consortium. Funded by the German Research Foundation (DFG) - project number 442146713. + # Known Issues # FAQs