diff --git a/API/projectClass/customFileClass.m b/API/projectClass/customFileClass.m index 0da2feb7a..51e725901 100644 --- a/API/projectClass/customFileClass.m +++ b/API/projectClass/customFileClass.m @@ -270,11 +270,11 @@ function displayTable(obj) % ------- % fileStruct : struct % A struct which contains the properties for all the custom files. - fileStruct.files = cell(1, 0); + fileStruct.files = cell(0, 1); fileStruct.fileIdentifiers = {}; numberOfFiles = obj.rowCount; if numberOfFiles > 0 - filesList = cell(numberOfFiles, 1); + filesList = cell(1, numberOfFiles); for i = 1:numberOfFiles thisRow = obj.varTable{i,:}; thisFile = thisRow{2}; diff --git a/tests/domainsTFReflectivityCalculation/domainsCustomLayersInputs.mat b/tests/domainsTFReflectivityCalculation/domainsCustomLayersInputs.mat index 55e9e6e8f..2becc89f9 100644 Binary files a/tests/domainsTFReflectivityCalculation/domainsCustomLayersInputs.mat and b/tests/domainsTFReflectivityCalculation/domainsCustomLayersInputs.mat differ diff --git a/tests/domainsTFReflectivityCalculation/domainsCustomLayersOutputs.mat b/tests/domainsTFReflectivityCalculation/domainsCustomLayersOutputs.mat index 2b4b8ebfb..aaa59fa26 100644 Binary files a/tests/domainsTFReflectivityCalculation/domainsCustomLayersOutputs.mat and b/tests/domainsTFReflectivityCalculation/domainsCustomLayersOutputs.mat differ diff --git a/tests/domainsTFReflectivityCalculation/domainsCustomLayersTFParams.mat b/tests/domainsTFReflectivityCalculation/domainsCustomLayersTFParams.mat index 01b20c51f..2360704db 100644 Binary files a/tests/domainsTFReflectivityCalculation/domainsCustomLayersTFParams.mat and b/tests/domainsTFReflectivityCalculation/domainsCustomLayersTFParams.mat differ diff --git a/tests/domainsTFReflectivityCalculation/domainsCustomXYInputs.mat b/tests/domainsTFReflectivityCalculation/domainsCustomXYInputs.mat index 02dbeb9f3..34fff2f40 100644 Binary files a/tests/domainsTFReflectivityCalculation/domainsCustomXYInputs.mat and b/tests/domainsTFReflectivityCalculation/domainsCustomXYInputs.mat differ diff --git a/tests/domainsTFReflectivityCalculation/domainsCustomXYOutputs.mat b/tests/domainsTFReflectivityCalculation/domainsCustomXYOutputs.mat index 8eb9c78b6..10f1f79cf 100644 Binary files a/tests/domainsTFReflectivityCalculation/domainsCustomXYOutputs.mat and b/tests/domainsTFReflectivityCalculation/domainsCustomXYOutputs.mat differ diff --git a/tests/domainsTFReflectivityCalculation/domainsCustomXYTFParams.mat b/tests/domainsTFReflectivityCalculation/domainsCustomXYTFParams.mat index f76b67340..0efa413e3 100644 Binary files a/tests/domainsTFReflectivityCalculation/domainsCustomXYTFParams.mat and b/tests/domainsTFReflectivityCalculation/domainsCustomXYTFParams.mat differ diff --git a/tests/domainsTFReflectivityCalculation/domainsStandardLayersInputs.mat b/tests/domainsTFReflectivityCalculation/domainsStandardLayersInputs.mat index 83b7b1d77..b200e9a57 100644 Binary files a/tests/domainsTFReflectivityCalculation/domainsStandardLayersInputs.mat and b/tests/domainsTFReflectivityCalculation/domainsStandardLayersInputs.mat differ diff --git a/tests/domainsTFReflectivityCalculation/domainsStandardLayersOutputs.mat b/tests/domainsTFReflectivityCalculation/domainsStandardLayersOutputs.mat index de8883898..6fa170eba 100644 Binary files a/tests/domainsTFReflectivityCalculation/domainsStandardLayersOutputs.mat and b/tests/domainsTFReflectivityCalculation/domainsStandardLayersOutputs.mat differ diff --git a/tests/domainsTFReflectivityCalculation/domainsStandardLayersTFParams.mat b/tests/domainsTFReflectivityCalculation/domainsStandardLayersTFParams.mat index b922030cc..232c62a11 100644 Binary files a/tests/domainsTFReflectivityCalculation/domainsStandardLayersTFParams.mat and b/tests/domainsTFReflectivityCalculation/domainsStandardLayersTFParams.mat differ diff --git a/tests/normalTFReflectivityCalculation/absorptionInputs.mat b/tests/normalTFReflectivityCalculation/absorptionInputs.mat index 6cdba013e..464e38941 100644 Binary files a/tests/normalTFReflectivityCalculation/absorptionInputs.mat and b/tests/normalTFReflectivityCalculation/absorptionInputs.mat differ diff --git a/tests/normalTFReflectivityCalculation/absorptionOutputs.mat b/tests/normalTFReflectivityCalculation/absorptionOutputs.mat index 450b87d06..234b90201 100644 Binary files a/tests/normalTFReflectivityCalculation/absorptionOutputs.mat and b/tests/normalTFReflectivityCalculation/absorptionOutputs.mat differ diff --git a/tests/normalTFReflectivityCalculation/absorptionTFParams.mat b/tests/normalTFReflectivityCalculation/absorptionTFParams.mat index 6a7cbecc5..c17076f88 100644 Binary files a/tests/normalTFReflectivityCalculation/absorptionTFParams.mat and b/tests/normalTFReflectivityCalculation/absorptionTFParams.mat differ diff --git a/tests/normalTFReflectivityCalculation/customLayersInputs.mat b/tests/normalTFReflectivityCalculation/customLayersInputs.mat index 365167495..76d69081f 100644 Binary files a/tests/normalTFReflectivityCalculation/customLayersInputs.mat and b/tests/normalTFReflectivityCalculation/customLayersInputs.mat differ diff --git a/tests/normalTFReflectivityCalculation/customLayersOutputs.mat b/tests/normalTFReflectivityCalculation/customLayersOutputs.mat index 843d86c2e..be8c4fca6 100644 Binary files a/tests/normalTFReflectivityCalculation/customLayersOutputs.mat and b/tests/normalTFReflectivityCalculation/customLayersOutputs.mat differ diff --git a/tests/normalTFReflectivityCalculation/customLayersTFParams.mat b/tests/normalTFReflectivityCalculation/customLayersTFParams.mat index e5db0bfc7..27be978ec 100644 Binary files a/tests/normalTFReflectivityCalculation/customLayersTFParams.mat and b/tests/normalTFReflectivityCalculation/customLayersTFParams.mat differ diff --git a/tests/normalTFReflectivityCalculation/customXYInputs.mat b/tests/normalTFReflectivityCalculation/customXYInputs.mat index bba07e910..36fce55a7 100644 Binary files a/tests/normalTFReflectivityCalculation/customXYInputs.mat and b/tests/normalTFReflectivityCalculation/customXYInputs.mat differ diff --git a/tests/normalTFReflectivityCalculation/customXYOutputs.mat b/tests/normalTFReflectivityCalculation/customXYOutputs.mat index c31369eb0..b2c27f557 100644 Binary files a/tests/normalTFReflectivityCalculation/customXYOutputs.mat and b/tests/normalTFReflectivityCalculation/customXYOutputs.mat differ diff --git a/tests/normalTFReflectivityCalculation/customXYTFParams.mat b/tests/normalTFReflectivityCalculation/customXYTFParams.mat index ce08b7ad5..fd9df61e5 100644 Binary files a/tests/normalTFReflectivityCalculation/customXYTFParams.mat and b/tests/normalTFReflectivityCalculation/customXYTFParams.mat differ diff --git a/tests/normalTFReflectivityCalculation/standardLayersInputs.mat b/tests/normalTFReflectivityCalculation/standardLayersInputs.mat index 5a2ee430e..30035ee3b 100644 Binary files a/tests/normalTFReflectivityCalculation/standardLayersInputs.mat and b/tests/normalTFReflectivityCalculation/standardLayersInputs.mat differ diff --git a/tests/normalTFReflectivityCalculation/standardLayersOutputs.mat b/tests/normalTFReflectivityCalculation/standardLayersOutputs.mat index f3229d72d..6ebd9f667 100644 Binary files a/tests/normalTFReflectivityCalculation/standardLayersOutputs.mat and b/tests/normalTFReflectivityCalculation/standardLayersOutputs.mat differ diff --git a/tests/normalTFReflectivityCalculation/standardLayersTFParams.mat b/tests/normalTFReflectivityCalculation/standardLayersTFParams.mat index e404db035..3a97c1561 100644 Binary files a/tests/normalTFReflectivityCalculation/standardLayersTFParams.mat and b/tests/normalTFReflectivityCalculation/standardLayersTFParams.mat differ diff --git a/tests/testCustomFileClass.m b/tests/testCustomFileClass.m index ac3d1159f..2d1920a7e 100644 --- a/tests/testCustomFileClass.m +++ b/tests/testCustomFileClass.m @@ -441,7 +441,7 @@ function testToStructWrapper(testCase) fileStruct = customClass.toStruct(); wrapper2 = customClass.wrappers{2}; testCase.verifyEqual(wrapper2.libPath, filename); - testCase.verifyEqual(fileStruct.files, {wrapper.getHandle(); fakeID}); + testCase.verifyEqual(fileStruct.files, {wrapper.getHandle(), fakeID}); delete(customClass); testCase.assertEqual(wrapperMexMock.callCount, 2); end diff --git a/tests/testProjectConversion/monolayerVolumeModelProjectClass.mat b/tests/testProjectConversion/monolayerVolumeModelProjectClass.mat index a7c637772..81ae5de0d 100644 Binary files a/tests/testProjectConversion/monolayerVolumeModelProjectClass.mat and b/tests/testProjectConversion/monolayerVolumeModelProjectClass.mat differ diff --git a/utilities/misc/controlsToJson.m b/utilities/misc/controlsToJson.m index 7ffb24050..95151476b 100644 --- a/utilities/misc/controlsToJson.m +++ b/utilities/misc/controlsToJson.m @@ -3,7 +3,6 @@ function controlsToJson(controls,filename) % Saves the current controls block as a json.. encoded = jsonencode(controls,ConvertInfAndNaN=false); -encoded = replace(encoded,'Infinity','Inf'); [path,filename,~] = fileparts(filename); fid = fullfile(path, append(filename, '.json')); diff --git a/utilities/misc/projectToJson.m b/utilities/misc/projectToJson.m index 0024ab925..891828456 100644 --- a/utilities/misc/projectToJson.m +++ b/utilities/misc/projectToJson.m @@ -1,6 +1,16 @@ function encoded = projectToJson(problem,filename) % Converts a projectClass to a json file... +try + jpath = java.nio.file.Paths.get(filename, javaArray('java.lang.String', 0)); + if ~jpath.isAbsolute() + jpath = java.nio.file.Paths.get(pwd, javaArray('java.lang.String', 0)); + jpath = jpath.resolve(filename); + end + filename = jpath.toString().toCharArray'; +catch ME + error(ME.message) +end % Check is we have a domains project.. if isa(problem,'domainsClass') @@ -75,7 +85,7 @@ % Custom files.... customTable = problem.customFile.varTable; -totalStruct.custom_files = makeCustomFileStruct(customTable); +totalStruct.custom_files = makeCustomFileStruct(customTable, filename); % Data... dataTable = problem.data.varTable; @@ -104,7 +114,6 @@ % Save the file encoded = jsonencode(totalStruct,ConvertInfAndNaN=false); -encoded = replace(encoded,'Infinity','Inf'); [path,filename,~] = fileparts(filename); fid = fullfile(path, append(filename, '.json')); @@ -146,7 +155,7 @@ paramStruct(i).name = strtrim(paramStruct(i).name); paramStruct(i).prior_type = strtrim(paramStruct(i).prior_type); end - +paramStruct = correctScalarStruct(paramStruct); end % ------------------------------------------ @@ -176,6 +185,7 @@ typeStruct(i).(fields{n}) = strtrim(typeStruct(i).(fields{n})); end end +typeStruct = correctScalarStruct(typeStruct); end @@ -187,6 +197,7 @@ dataTable.Properties.VariableNames = ["name", "data", "data_range", "simulation_range"]; dataStruct = table2struct(dataTable); +dataStruct = correctScalarStruct(dataStruct); end @@ -199,7 +210,7 @@ "hydration", "hydrate_with"]; layersStruct = table2struct(layersTable); - +layersStruct = correctScalarStruct(layersStruct); end % ------------------------------------------- @@ -214,7 +225,7 @@ thisContrast = orderfields(thisContrast,["name","model"]); contrastStruct(i,1) = thisContrast; end - +contrastStruct = correctScalarStruct(contrastStruct); end % --------------------------------------------- @@ -252,7 +263,7 @@ newContrastStruct(1,i) = thisContrastStruct; end - +newContrastStruct = correctScalarStruct(newContrastStruct); end % --------------------------------------------------------------------- @@ -291,12 +302,13 @@ newContrastStruct(1,i) = thisContrastStruct; end +newContrastStruct = correctScalarStruct(newContrastStruct); end % --------------------------------------------------------------------- -function customFileStruct = makeCustomFileStruct(customTable) +function customFileStruct = makeCustomFileStruct(customTable, jsonFilePath) % Rename columns to match Python (mainly case).... varNames = ["name","filename","function_name","language","path"]; @@ -312,6 +324,23 @@ % Remove trailing spaces from chars... customFileStruct = removeSpaces(customFileStruct); +for i = 1:length(customFileStruct) + try + path2 = customFileStruct(i).path; + jpath1 = java.nio.file.Paths.get(jsonFilePath, javaArray('java.lang.String', 0)).getParent(); + jpath2 = java.nio.file.Paths.get(path2, javaArray('java.lang.String', 0)); + if isempty(path2) || strcmp(path2, '.') || jpath1.equals(jpath2) + filepath = '.'; + else + filepath = jpath1.relativize(jpath2).toString().toCharArray'; + end + + catch ME + error(ME.message) + end + customFileStruct(i).path = filepath; +end +customFileStruct = correctScalarStruct(customFileStruct); end % ---------------------------------------------------------------- @@ -328,4 +357,11 @@ end +function thisStruct = correctScalarStruct(thisStruct) +% Corrects scalar struct so its written as an array in json + if length(thisStruct) == 1 + thisStruct = {thisStruct}; + end +end + % ---------------------------------------------------------------- \ No newline at end of file diff --git a/utilities/misc/resultsToJson.m b/utilities/misc/resultsToJson.m index fed8d82e7..814c456fb 100644 --- a/utilities/misc/resultsToJson.m +++ b/utilities/misc/resultsToJson.m @@ -4,7 +4,6 @@ function resultsToJson(results,filename) % Encodes the results into a json file... encoded = jsonencode(results,ConvertInfAndNaN=false); -encoded = replace(encoded,'Infinity','Inf'); [path,filename,~] = fileparts(filename); fid = fullfile(path, append(filename, '.json'));