swh:1:snp:e6d42e6731ce66e3c09de07ac49964c03139e990
Raw File
Tip revision: 23801a03e63804d9d099c644e2c2fe4945d6d06b authored by Konrad Werys on 30 July 2019, 11:59:42 UTC
fix: codecov reports
Tip revision: 23801a0
tomatoMatlab.m
% To use tomato you need two things:
% 1. tomato executable
% 2. configuration file in yaml. 
%	a. yamlmatlab allows you to read yaml to a structure and write a
%	structure to yaml
%   b. the best way to start with the config files is to read a template
%   yaml file
%   c. define/modify parameters in the structure
%   d. save structure to a yaml file
% Then, using matlab 'system' command you can run tomato from matlab. Voila!
%
% Hint: look at the output of the tomato executable to see what options are
% available in the yaml config file
%
% Konrad Werys 2018
% konrad.werys@cardiov.ox.ac.uk

clear 

%% 1. what is the path to the tomato exacutable?
% exepath = 'TomatoExe_v0.1_Windows_x64.exe'; % downloaded from github on windows
exepath = '../cmake-build-release/TomatoExe'; % build from clion on macos

%% 2.a. add yaml reading and writing lib to path
addpath(genpath('../thirdparty/yamlmatlab'));

%% 2.b. the best way to start with the config files is to read a template yaml file and modify it (2.c.)
template_yaml_file = '../tests/testData/Hcmr_Phantom_1916_Shmolli_192i_e11_inputDirs.yaml';
% template_yaml_file = '../tests/testData/Hcmr_Phantom_1916_Shmolli_192i_e11_fileList.yaml';
YamlStruct = yaml.ReadYaml(template_yaml_file);

%% 2.c. define/modify params in the structure. Input params are obligatory for calculation, the rest are optional. 

% %%% input params %%%
YamlStruct.files_magnitude = '';
YamlStruct.files_phase = '';
YamlStruct.dir_magnitude = '../tests/testData/dicom/Hcmr_Phantom_1916_260C/Konrad_Shmolli/ShMOLLI_192i_e11_12';
YamlStruct.dir_phase = '../tests/testData/dicom/Hcmr_Phantom_1916_260C/Konrad_Shmolli/ShMOLLI_192i_e11_13';

% % %%% output params %%%
% YamlStruct.dir_output_map = 'map';
% YamlStruct.dir_output_fitparams = 'fitparams';
% YamlStruct.output_map_series_number = 9998;
% YamlStruct.output_fitparams_series_number = 9999;
% 
% %%% calculation params %%%
% YamlStruct.parameter_to_map = 'T1_MOLLI';
% YamlStruct.fitting_method = 'LevMarVnl';
% YamlStruct.functions_type = 'FunctionsBasic';
% YamlStruct.sign_calc_method = 'NoSign';
% YamlStruct.start_point_calc_method = 'Default';
% YamlStruct.fTolerance = 1.0E-12;
% YamlStruct.max_function_evals = 4000.0;
% YamlStruct.use_gradient = 0;
% YamlStruct.mean_cut_off = 10;
% YamlStruct.number_of_threads = 0;
% 
% %%% visualise params %%%
% YamlStruct.visualise = 1;

%% 2.d. save structure to a yaml file
my_yaml_file = './my_yaml_file.yaml';
yaml.WriteYaml(my_yaml_file, YamlStruct, 0);

%% Run tomato
system([exepath, ' ', my_yaml_file]);
back to top