From 51c73be3c494c5e4b1f5bfab2576b550d5c1d5eb Mon Sep 17 00:00:00 2001 From: hayakawa Date: Thu, 19 Sep 2024 19:21:36 -0700 Subject: [PATCH 1/6] Found bug using wvs instead of wv, modified all to wvs since multiple wavelengths. Found major bug in that get_optical_properties returns [mua,mus',g,n] and I was using the 2nd parameter as if it was mus not musp, so code that substitutes into the infiles for the database generation and the post-processing, inserted the wrong values for "s1" (mus) and "sp1" (musp). This code was correct in the Linux version, however I plan to make sure those results agree with those generated on Windows. --- .../windows/mc_inverse_Win.m | 79 +++++++++++-------- .../windows/pmc_Chi2_ex2_Win.m | 4 +- .../windows/pmc_Chi2_ex3_Win.m | 4 +- .../windows/pmc_F_dmc_J_ex2_Win.m | 6 +- .../windows/pmc_F_dmc_J_ex3_Win.m | 8 +- 5 files changed, 55 insertions(+), 46 deletions(-) diff --git a/matlab/monte_carlo_inverse/windows/mc_inverse_Win.m b/matlab/monte_carlo_inverse/windows/mc_inverse_Win.m index 64f3447b0..54f2e1417 100644 --- a/matlab/monte_carlo_inverse/windows/mc_inverse_Win.m +++ b/matlab/monte_carlo_inverse/windows/mc_inverse_Win.m @@ -2,14 +2,18 @@ % This script includes three examples: % 1) Example 1: equivalent to Example 7 in vts_mc_demo.m: use N=1000 in % infile_pMC_db_gen_template.txt to reproduce results in vts_mc_demo.m +% for multiple rho % 2) Example 2: inverse solution for chromophore concentrations -% for multiple wavelengths, single rho: use -% wv=500:100:1000 and rho=1, N=10000 in infile_pMC_db_gen_template.txt +% for multiple wavelengths, single rho: use N=10000 in +% infile_pMC_db_gen_template.txt. Example specifies +% wv=500:100:1000nm and rho=1mm, % these selections different than those used in vts_solver_demo.m % 3) Example 3: inverse solution for chromophore concentrations -% for multiple wavelengths, two rho: use +% for multiple wavelengths, two rho: use N=10000 in +% infile_pMC_db_gen_template.txt. Example specifies +% wv=600:100:900nm and rho=0.1429mm and 1mm. % -% but does not require *MATLAB interop* code to run +% Note! This script does not require *MATLAB interop* code to run %% clear all clc @@ -25,7 +29,7 @@ % 4) normalization of chi2 % 5) optimset options selected %% read in baseline OPs from database gen infile -x0 = [0.01, 5.0]; % baseline values for database and initial guess [mua, mus] +x0 = [0.01, 5.0]; % baseline values for database and initial guess [mua, mus], i.e musp=1.0 g = 0.8; % input rho: in inversion don't use last point since includes tallies from % beyond @@ -73,7 +77,7 @@ end [R,pmcR,dmcRmua,dmcRmus]=load_for_inv_results('PP_rho'); R_conv=pmcR(1:end-1)'; -f = figure; semilogy(rhoMidpoints(1:end-1),measData,'r.',... +f = figure; semilogy(rhoMidpoints(1:end-1),measData,'rx',... rhoMidpoints(1:end-1),R_ig,'g-',... rhoMidpoints(1:end-1),R_conv,'b:','LineWidth',2); xlabel('\rho [mm]'); @@ -96,13 +100,15 @@ % Run a Monte Carlo simulation with pMC post-processing enabled % Use generated database to solve inverse problem with measured data % generated using Nurbs and selected concentrations + +% following rho specifications just needed to fill out infile template rhostart=0; rhostop=2; rhocount=8; rho=linspace(rhostart,rhostop,rhocount); rhoMidpoints=(rho(1:end-1) + rho(2:end))/2; gen_db=true; -wv = 500:100:1000; % change from vts_solver_demo +wvs = 500:100:1000; % change from vts_solver_demo % create a list of chromophore absorbers and their concentrations % these values are the initial guess @@ -116,18 +122,18 @@ g=0.8; n=1.4; -% ops has dimensions [numwv 4] -[ops,dmua,dmusp]=get_optical_properties(absorbers,scatterers,wv); +% ops has dimensions [numwvs 4] 4=[mua,musp,g,n] +[ops,dmua,dmusp]=get_optical_properties(absorbers,scatterers,wvs); -R_ig=zeros(1,length(wv)); +R_ig=zeros(1,length(wvs)); infile_pMC='infile_pMC_db_gen.txt'; if (gen_db) - for iwv=1:length(wv) + for iwv=1:length(wvs) [status]=system(sprintf('copy infile_pMC_db_gen_template.txt %s',infile_pMC)); [status]=system(sprintf('powershell -inputformat none -file replace_string.ps1 %s %s %s',infile_pMC,'var1',sprintf('wv%d',iwv))); [status]=system(sprintf('powershell -inputformat none -file replace_string.ps1 %s %s %f',infile_pMC,'a1',ops(iwv,1))); - [status]=system(sprintf('powershell -inputformat none -file replace_string.ps1 %s %s %f',infile_pMC,'s1',ops(iwv,2))); - [status]=system(sprintf('powershell -inputformat none -file replace_string.ps1 %s %s %f',infile_pMC,'sp1',ops(iwv,2)*(1-g))); + [status]=system(sprintf('powershell -inputformat none -file replace_string.ps1 %s %s %f',infile_pMC,'s1',ops(iwv,2)/(1-g))); + [status]=system(sprintf('powershell -inputformat none -file replace_string.ps1 %s %s %f',infile_pMC,'sp1',ops(iwv,2))); [status]=system(sprintf('powershell -inputformat none -file replace_string.ps1 %s %s %f',infile_pMC,'rhostart',rhostart)); [status]=system(sprintf('powershell -inputformat none -file replace_string.ps1 %s %s %f',infile_pMC,'rhostop',rhostop)); [status]=system(sprintf('powershell -inputformat none -file replace_string.ps1 %s %s %d',infile_pMC,'rhocount',rhocount)); @@ -135,7 +141,7 @@ system('mc infile=infile_pMC_db_gen.txt'); end end -for iwv=1:length(wv) +for iwv=1:length(wvs) [R,pmcR,dmcRmua,dmcRmus]=load_for_inv_results(sprintf('pMC_db_wv%d',iwv)); R_ig(iwv)=R(4); end @@ -144,7 +150,7 @@ lb=[]; ub=[]; % input measData taken from vts_solver_demo using Nurbs rho=1mm and % concentrations -%measParms = [ 70, 30, 0.8 ]; % debug with same as measured +%measParms = [ 70, 30, 0.8 ]; % debug with same as initial guess %measData = [0.0089 0.0221 0.0346 0.0301 0.0251 0.0198]; measParms = [ 72, 35, 0.6 ]; measData = [0.0082 0.0208 0.0342 0.0299 0.0250 0.0205]; @@ -153,23 +159,26 @@ % dMC differential Monte Carlo predictions % if don't have Optimization Toolbox, run non-gradient, non-constrained % fminsearch +% additional parameters (rhoMidpoints,absorbers,scatterers,g,n) sent into +% pmc_F_dmc_J_ex2_Win to provide post-processor infile needed variable +% substitutions (e.g. rhoMidpoints not used by inversion) if(exist('lsqcurvefit','file')) options = optimoptions('lsqcurvefit','Algorithm','levenberg-marquardt',... 'SpecifyObjectiveGradient',true,'Diagnostics','on'); - [recoveredOPs,resnorm] = lsqcurvefit('pmc_F_dmc_J_ex2_Win',igConc,wv,measData',lb,ub,... + [recoveredOPs,resnorm] = lsqcurvefit('pmc_F_dmc_J_ex2_Win',igConc,wvs,measData',lb,ub,... options,rhoMidpoints,absorbers,scatterers,g,n); else options = optimset('diagnostics','on','largescale','on'); recoveredOPs = fminsearch('pmc_Chi2_ex2_Win',igConc,options,wvs,rhoMidpoints,absorbers,scatterers,g,n,measData); end -R_conv=zeros(1,length(wv)); -for iwv=1:length(wv) +R_conv=zeros(1,length(wvs)); +for iwv=1:length(wvs) [R,pmcR,dmcRmua,dmcRmus]=load_for_inv_results(sprintf('PP_wv%d',iwv)); R_conv(iwv)=pmcR(4); end -f = figure; plot(wv,measData,'r.',... - wv,R_ig,'g-',... - wv,R_conv,'b:','LineWidth',2); +f = figure; plot(wvs,measData,'rx',... + wvs,R_ig,'g-',... + wvs,R_conv,'b:','LineWidth',2); xlabel('\lambda [nm]'); ylabel('R(\lambda)'); legend('Meas','IG','Converged','Location','Best'); @@ -207,22 +216,22 @@ n=1.4; igParms = [absorbers.Concentrations(1) absorbers.Concentrations(2) scatterers.Coefficients(1) scatterers.Coefficients(2)]; -% ops has dimensions [numwv 4] -[ops,dmua,dmusp]=get_optical_properties(absorbers,scatterers,wv); +% ops has dimensions [numwv 4] 4=[mua,musp,g,n] +[ops,dmua,dmusp]=get_optical_properties(absorbers,scatterers,wvs); infile_pMC='infile_pMC_db_gen.txt'; if (gen_db) - for iwv=1:length(wv) + for iwv=1:length(wvs) [status]=system(sprintf('copy infile_pMC_db_gen_template.txt %s',infile_pMC)); [status]=system(sprintf('powershell -inputformat none -file replace_string.ps1 %s %s %s',infile_pMC,'var1',sprintf('wv%d',iwv))); [status]=system(sprintf('powershell -inputformat none -file replace_string.ps1 %s %s %f',infile_pMC,'a1',ops(iwv,1))); - [status]=system(sprintf('powershell -inputformat none -file replace_string.ps1 %s %s %f',infile_pMC,'s1',ops(iwv,2))); - [status]=system(sprintf('powershell -inputformat none -file replace_string.ps1 %s %s %f',infile_pMC,'sp1',ops(iwv,2)*(1-g))); + [status]=system(sprintf('powershell -inputformat none -file replace_string.ps1 %s %s %f',infile_pMC,'s1',ops(iwv,2)/(1-g))); + [status]=system(sprintf('powershell -inputformat none -file replace_string.ps1 %s %s %f',infile_pMC,'sp1',ops(iwv,2))); [status]=system(sprintf('powershell -inputformat none -file replace_string.ps1 %s %s %f',infile_pMC,'rhostart',rhostart)); [status]=system(sprintf('powershell -inputformat none -file replace_string.ps1 %s %s %f',infile_pMC,'rhostop',rhostop)); [status]=system(sprintf('powershell -inputformat none -file replace_string.ps1 %s %s %d',infile_pMC,'rhocount',rhocount)); % generate databases for each wavelength - system('./mc infile=infile_pMC_db_gen.txt'); + system('mc infile=infile_pMC_db_gen.txt'); end end R_ig=zeros(1,length(wvs)*numrho); @@ -235,7 +244,7 @@ %% use unconstrained optimization lb=[-inf -inf]; ub=[inf inf]; lb=[]; ub=[]; -% input measData taken from vts_solver_demo using Nurbs rhoMidpoint=0.1429,1.0mm and +% input measData taken from vts_solver_demo using Nurbs rhoMidpoints=0.1429,1.0mm and % parameters { 28.4, 22.4, 1.2, 1.42 } measParms = [28.4, 22.4, 1.2, 1.42 ]; measData = [0.2931 0.2548 0.2068 0.1711 0.0255 0.0355 0.0320 0.0277]; @@ -246,21 +255,21 @@ if(exist('lsqcurvefit','file')) options = optimoptions('lsqcurvefit','Algorithm','levenberg-marquardt',... 'SpecifyObjectiveGradient',true,'Diagnostics','on'); - [recoveredOPs,resnorm] = lsqcurvefit('pmc_F_dmc_J_ex3_Win',igParms,[wv wv],measData',lb,ub,... + [recoveredOPs,resnorm] = lsqcurvefit('pmc_F_dmc_J_ex3_Win',igParms,[wvs wvs],measData',lb,ub,... options,rhoMidpoints,absorbers,scatterers,g,n); else options = optimset('diagnostics','on','largescale','on'); recoveredOPs = fminsearch('pmc_Chi2_ex3_Win',igParms,options,wvs,rhoMidpoints,absorbers,scatterers,g,n,measData); end -R_conv=zeros(1,length(wv)); -for iwv=1:length(wv) +R_conv=zeros(1,length(wvs)); +for iwv=1:length(wvs) [R,pmcR,dmcRmua,dmcRmus]=load_for_inv_results(sprintf('PP_wv%d',iwv)); R_conv(iwv)=pmcR(1); - R_conv(iwv+length(wv))=pmcR(4); + R_conv(iwv+length(wvs))=pmcR(4); end -f = figure; plot(wv,measData(1:length(wv)),'rx',wv,measData(length(wv)+1:end),'ro',... - wv,R_ig(1:length(wv)),'g-',wv,R_ig(length(wv)+1:end),'g--',... - wv,R_conv(1:length(wv)),'b-',wv,R_conv(length(wv)+1:end),'b--','LineWidth',2); +f = figure; plot(wvs,measData(1:length(wvs)),'rx',wvs,measData(length(wvs)+1:end),'ro',... + wvs,R_ig(1:length(wvs)),'g-',wvs,R_ig(length(wvs)+1:end),'g--',... + wvs,R_conv(1:length(wvs)),'b-',wvs,R_conv(length(wvs)+1:end),'b--','LineWidth',2); xlabel('\lambda [nm]'); ylabel('R(\lambda)'); legend('Meas rho=0.1429','Meas rho=1.0','IG rho=0.01429','IG rho=1.0',... diff --git a/matlab/monte_carlo_inverse/windows/pmc_Chi2_ex2_Win.m b/matlab/monte_carlo_inverse/windows/pmc_Chi2_ex2_Win.m index a62ee5978..eb2ddf2f8 100644 --- a/matlab/monte_carlo_inverse/windows/pmc_Chi2_ex2_Win.m +++ b/matlab/monte_carlo_inverse/windows/pmc_Chi2_ex2_Win.m @@ -30,8 +30,8 @@ [status]=system(sprintf('copy infile_PP_pMC_est_template.txt %s',infile_PP)); [status]=system(sprintf('powershell -inputformat none -file replace_string.ps1 %s %s %s',infile_PP,'var1',sprintf('wv%d',iwv))); [status]=system(sprintf('powershell -inputformat none -file replace_string.ps1 %s %s %f',infile_PP,'a1',ops(iwv,1))); - [status]=system(sprintf('powershell -inputformat none -file replace_string.ps1 %s %s %f',infile_PP,'s1',ops(iwv,2))); - [status]=system(sprintf('powershell -inputformat none -file replace_string.ps1 %s %s %f',infile_PP,'sp1',ops(iwv,2)*(1-g))); + [status]=system(sprintf('powershell -inputformat none -file replace_string.ps1 %s %s %f',infile_PP,'s1',ops(iwv,2)/(1-g))); + [status]=system(sprintf('powershell -inputformat none -file replace_string.ps1 %s %s %f',infile_PP,'sp1',ops(iwv,2))); [status]=system(sprintf('powershell -inputformat none -file replace_string.ps1 %s %s %f',infile_PP,'rhostart',rho(1))); [status]=system(sprintf('powershell -inputformat none -file replace_string.ps1 %s %s %f',infile_PP,'rhostop',rho(end))); [status]=system(sprintf('powershell -inputformat none -file replace_string.ps1 %s %s %d',infile_PP,'rhocount',length(rho))); diff --git a/matlab/monte_carlo_inverse/windows/pmc_Chi2_ex3_Win.m b/matlab/monte_carlo_inverse/windows/pmc_Chi2_ex3_Win.m index 6ac72b3ca..6a5f45b35 100644 --- a/matlab/monte_carlo_inverse/windows/pmc_Chi2_ex3_Win.m +++ b/matlab/monte_carlo_inverse/windows/pmc_Chi2_ex3_Win.m @@ -30,8 +30,8 @@ [status]=system(sprintf('copy infile_PP_pMC_est_template.txt %s',infile_PP)); [status]=system(sprintf('powershell -inputformat none -file replace_string.ps1 %s %s %s',infile_PP,'var1',sprintf('wv%d',iwv))); [status]=system(sprintf('powershell -inputformat none -file replace_string.ps1 %s %s %f',infile_PP,'a1',ops(iwv,1))); - [status]=system(sprintf('powershell -inputformat none -file replace_string.ps1 %s %s %f',infile_PP,'s1',ops(iwv,2))); - [status]=system(sprintf('powershell -inputformat none -file replace_string.ps1 %s %s %f',infile_PP,'sp1',ops(iwv,2)*(1-g))); + [status]=system(sprintf('powershell -inputformat none -file replace_string.ps1 %s %s %f',infile_PP,'s1',ops(iwv,2)/(1-g))); + [status]=system(sprintf('powershell -inputformat none -file replace_string.ps1 %s %s %f',infile_PP,'sp1',ops(iwv,2))); [status]=system(sprintf('powershell -inputformat none -file replace_string.ps1 %s %s %f',infile_PP,'rhostart',rho(1))); [status]=system(sprintf('powershell -inputformat none -file replace_string.ps1 %s %s %f',infile_PP,'rhostop',rho(end))); [status]=system(sprintf('powershell -inputformat none -file replace_string.ps1 %s %s %d',infile_PP,'rhocount',length(rho))); diff --git a/matlab/monte_carlo_inverse/windows/pmc_F_dmc_J_ex2_Win.m b/matlab/monte_carlo_inverse/windows/pmc_F_dmc_J_ex2_Win.m index 815d7d2f2..52a119957 100644 --- a/matlab/monte_carlo_inverse/windows/pmc_F_dmc_J_ex2_Win.m +++ b/matlab/monte_carlo_inverse/windows/pmc_F_dmc_J_ex2_Win.m @@ -31,15 +31,15 @@ [status]=system(sprintf('copy infile_PP_pMC_est_template.txt %s',infile_PP)); [status]=system(sprintf('powershell -inputformat none -file replace_string.ps1 %s %s %s',infile_PP,'var1',sprintf('wv%d',iwv))); [status]=system(sprintf('powershell -inputformat none -file replace_string.ps1 %s %s %f',infile_PP,'a1',ops(iwv,1))); - [status]=system(sprintf('powershell -inputformat none -file replace_string.ps1 %s %s %f',infile_PP,'s1',ops(iwv,2))); - [status]=system(sprintf('powershell -inputformat none -file replace_string.ps1 %s %s %f',infile_PP,'sp1',ops(iwv,2)*(1-g))); + [status]=system(sprintf('powershell -inputformat none -file replace_string.ps1 %s %s %f',infile_PP,'s1',ops(iwv,2)/(1-g))); + [status]=system(sprintf('powershell -inputformat none -file replace_string.ps1 %s %s %f',infile_PP,'sp1',ops(iwv,2))); [status]=system(sprintf('powershell -inputformat none -file replace_string.ps1 %s %s %f',infile_PP,'rhostart',rho(1))); [status]=system(sprintf('powershell -inputformat none -file replace_string.ps1 %s %s %f',infile_PP,'rhostop',rho(end))); [status]=system(sprintf('powershell -inputformat none -file replace_string.ps1 %s %s %d',infile_PP,'rhocount',length(rho))); % run MCPP with updated infile [status]=system(sprintf('mc_post infile=%s',infile_PP)); [R,pmcR,dmcRmua,dmcRmus]=load_for_inv_results(sprintf('PP_wv%d',iwv)); - F(iwv)=pmcR(4)'; + F(iwv)=pmcR(4)'; % index=4 is rho=1mm % set jacobian derivative information if (length(fitparms)==length(absorbers.Names)) % => only chromophore fit J(iwv,:) = [dmcRmua(4) * dmua(iwv,:)]; diff --git a/matlab/monte_carlo_inverse/windows/pmc_F_dmc_J_ex3_Win.m b/matlab/monte_carlo_inverse/windows/pmc_F_dmc_J_ex3_Win.m index 5b35c19bf..c592ba604 100644 --- a/matlab/monte_carlo_inverse/windows/pmc_F_dmc_J_ex3_Win.m +++ b/matlab/monte_carlo_inverse/windows/pmc_F_dmc_J_ex3_Win.m @@ -31,16 +31,16 @@ [status]=system(sprintf('copy infile_PP_pMC_est_template.txt %s',infile_PP)); [status]=system(sprintf('powershell -inputformat none -file replace_string.ps1 %s %s %s',infile_PP,'var1',sprintf('wv%d',iwv))); [status]=system(sprintf('powershell -inputformat none -file replace_string.ps1 %s %s %f',infile_PP,'a1',ops(iwv,1))); - [status]=system(sprintf('powershell -inputformat none -file replace_string.ps1 %s %s %f',infile_PP,'s1',ops(iwv,2))); - [status]=system(sprintf('powershell -inputformat none -file replace_string.ps1 %s %s %f',infile_PP,'sp1',ops(iwv,2)*(1-g))); + [status]=system(sprintf('powershell -inputformat none -file replace_string.ps1 %s %s %f',infile_PP,'s1',ops(iwv,2)/(1-g))); + [status]=system(sprintf('powershell -inputformat none -file replace_string.ps1 %s %s %f',infile_PP,'sp1',ops(iwv,2))); [status]=system(sprintf('powershell -inputformat none -file replace_string.ps1 %s %s %f',infile_PP,'rhostart',rho(1))); [status]=system(sprintf('powershell -inputformat none -file replace_string.ps1 %s %s %f',infile_PP,'rhostop',rho(end))); [status]=system(sprintf('powershell -inputformat none -file replace_string.ps1 %s %s %d',infile_PP,'rhocount',length(rho))); % run MCPP with updated infile [status]=system(sprintf('mc_post infile=%s',infile_PP)); [R,pmcR,dmcRmua,dmcRmus]=load_for_inv_results(sprintf('PP_wv%d',iwv)); - F(iwv)=pmcR(1)'; - F(iwv+length(wavelengths)/2)=pmcR(4)'; + F(iwv)=pmcR(1)'; % first rho=0.1429mm + F(iwv+length(wavelengths)/2)=pmcR(4)'; % 2nd rho=1mm % set jacobian derivative information if (length(fitparms)==length(absorbers.Names)) % => only chromophore fit J(iwv,:) = [dmcRmua(1) * dmua(iwv,:)]; From b862f019fcda3a420fa74b639ffd75a80f96ba94 Mon Sep 17 00:00:00 2001 From: hayakawa Date: Fri, 20 Sep 2024 17:15:33 -0700 Subject: [PATCH 2/6] @janakarana helped me to create SpectralDictionary.xlsx with the newly added spectral ranges. I updated get_mua.m accordingly to obtain the spectra correctly from the xlsx file. I cleaned up comments in mc_inverse.m and mc_inverse_Win.m so that they align as far as comments go. I took screenshots of the plots for Examples 1-3 in preparation for adding them to the MC Inverse wiki. Now to pull code to Linux and see if I obtain same plots. --- .../general/SpectralDictionary.xlsx | Bin 17434 -> 99106 bytes matlab/monte_carlo_inverse/general/get_mua.m | 32 ++++++---- .../linux_and_mac/mc_inverse.m | 55 ++++++++++-------- .../windows/mc_inverse_Win.m | 44 +++++++++----- 4 files changed, 82 insertions(+), 49 deletions(-) diff --git a/matlab/monte_carlo_inverse/general/SpectralDictionary.xlsx b/matlab/monte_carlo_inverse/general/SpectralDictionary.xlsx index edc0b7d96def31264506d791a6a71f31bf98bf6a..e2b2404c4cf2381433ece129c2a672159121bd9f 100644 GIT binary patch literal 99106 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 literal 17434 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 B9W4L= diff --git a/matlab/monte_carlo_inverse/general/get_mua.m b/matlab/monte_carlo_inverse/general/get_mua.m index d62d2633b..6ce728cf3 100644 --- a/matlab/monte_carlo_inverse/general/get_mua.m +++ b/matlab/monte_carlo_inverse/general/get_mua.m @@ -4,24 +4,32 @@ if isempty(data) data=xlsread('SpectralDictionary.xlsx'); % file has 1 tab only end +last_line=1202; +% read Fat data +wv_fat=data(2:last_line,1); +spec_fat=data(2:last_line,2); % read H2O data -last_line_h2o=209; -wv_h2o=data(2:last_line_h2o,1); -spec_h2o=data(2:last_line_h2o,2); +wv_h2o=data(2:last_line,3); +spec_h2o=data(2:last_line,4); % read Hb data -last_line_hb=376; -wv_hb=data(2:last_line_hb,3); -spec_hb=data(2:last_line_hb,4); +wv_hb=data(2:last_line,5); +spec_hb=data(2:last_line,6); % read HbO2 data -last_line_hbo2=376; -wv_hbo2=data(2:last_line_hbo2,5); -spec_hbo2=data(2:last_line_hbo2,6); +wv_hbo2=data(2:last_line,7); +spec_hbo2=data(2:last_line,8); +% read melanin data +wv_melanin=data(2:last_line,9); +spec_melanin=data(2:last_line,10); mua=zeros(1,length(wavelengths)); dmua=zeros(length(wavelengths),length(absorbers.Names)); for i=1:length(absorbers.Names) % determine if spectra is in molar absorption coefficients or fractional abs coefficient - if (strcmp(absorbers.Names(i),'H2O')) % fractional + if (strcmp(absorbers.Names(i),'Fat')) % fractional + values=interp1(wv_fat,spec_fat,wavelengths); + mua=mua+absorbers.Concentrations(i)*values; + dmua(:,i)=dmua(:,i)+values'; + elseif (strcmp(absorbers.Names(i),'H2O')) % fractional values=interp1(wv_h2o,spec_h2o,wavelengths); mua=mua+absorbers.Concentrations(i)*values; dmua(:,i)=dmua(:,i)+values'; @@ -33,6 +41,10 @@ values=interp1(wv_hbo2,spec_hbo2,wavelengths); mua=mua+log(10)*absorbers.Concentrations(i)*values; dmua(:,i)=dmua(:,i)+log(10)*values'; + elseif (strcmp(absorbers.Names(i),'Melanin')) % fractional + values=interp1(wv_melanin,spec_melanin,wavelengths); + mua=mua+absorbers.Concentrations(i)*values; + dmua(:,i)=dmua(:,i)+values'; end end end diff --git a/matlab/monte_carlo_inverse/linux_and_mac/mc_inverse.m b/matlab/monte_carlo_inverse/linux_and_mac/mc_inverse.m index ab94a743b..ce86d1cfb 100644 --- a/matlab/monte_carlo_inverse/linux_and_mac/mc_inverse.m +++ b/matlab/monte_carlo_inverse/linux_and_mac/mc_inverse.m @@ -2,14 +2,18 @@ % This script includes three examples: % 1) Example 1: equivalent to Example 7 in vts_mc_demo.m: use N=1000 in % infile_pMC_db_gen_template.txt to reproduce results in vts_mc_demo.m +% for multiple rho % 2) Example 2: inverse solution for chromophore concentrations -% for multiple wavelengths, single rho: use -% wv=500:100:1000 and rho=1, N=10000 in infile_pMC_db_gen_template.txt +% for multiple wavelengths, single rho: use N=10000 in +% infile_pMC_db_gen_template.txt. Example specifies +% wvs=500:100:1000nm and rho=1mm, % these selections different than those used in vts_solver_demo.m % 3) Example 3: inverse solution for chromophore concentrations -% for multiple wavelengths, two rho: use +% for multiple wavelengths, two rho: use N=10000 in +% infile_pMC_db_gen_template.txt. Example specifies +% wvs=600:100:900nm and rho=0.1429mm and 1mm. % -% but does not require *MATLAB interop* code to run +% Note! This script does not require *MATLAB interop* code to run %% clear all clc @@ -25,7 +29,7 @@ % 4) normalization of chi2 % 5) optimset options selected %% read in baseline OPs from database gen infile -x0 = [0.01, 5.0]; % baseline values for database and initial guess [mua, mus] +x0 = [0.01, 5.0]; % baseline values for database and initial guess [mua, mus], i.e. musp=1.0 g = 0.8; % input rho: in inversion don't use last point since includes tallies from % beyond @@ -86,9 +90,9 @@ legend('Meas','IG','Converged','Location','Best'); legend boxoff; grid on; -set(gca,'TickDir','out','FontSize',20); -title('Inverse solution using pMC/dMC'); -set(f, 'Name', 'Inverse solution using pMC/dMC'); +set(gca,'TickDir','out','FontSize',12); +title('Ex 1: Inverse solution using pMC/dMC'); +set(f, 'Name', 'Ex 1: Inverse solution using pMC/dMC'); disp(sprintf('Meas = [%f %5.3f]',measParms(1),measParms(2))); disp(sprintf('IG = [%f %5.3f] Chi2=%5.3e',x0(1),x0(2),... (measData-R_ig)*(measData-R_ig)')); @@ -104,7 +108,9 @@ % Run a Monte Carlo simulation with pMC post-processing enabled % Use generated database to solve inverse problem with measured data % generated using Nurbs and selected concentrations -% define 8 rho, however only 4th used in inverse problem + +% define 8 rho, however only 4th bin is used in inverse problem +% following rho specifications needed to fill out infile template rhostart=0; rhostop=2; rhocount=8; @@ -125,7 +131,8 @@ g=0.8; n=1.4; -% ops has dimensions [numwv 4] NOTE: if using Octave type "pkg load io" in Command Window +% ops has dimensions [numwvs 4] 4=[mua,musp,g,n] +% NOTE: if using Octave type "pkg load io" in Command Window % to load IO package and read SpectralDictionary.xlsx in next command [ops,dmua,dmusp]=get_optical_properties(absorbers,scatterers,wvs); @@ -154,10 +161,11 @@ lb=[]; ub=[]; % input measData taken from vts_solver_demo using Nurbs rho=1mm and % concentrations -%measParms = [ 70, 30, 0.8 ]; % debug with same as measured +%measParms = [ 70, 30, 0.8 ]; % debug with same as initial guess %measData = [0.0089 0.0221 0.0346 0.0301 0.0251 0.0198]; measParms = [ 72, 35, 0.6 ]; measData = [0.0082 0.0208 0.0342 0.0299 0.0250 0.0205]; + % run lsqcurvefit if have Optimization Toolbox because it makes use of % dMC differential Monte Carlo predictions % if don't have Optimization Toolbox, run non-gradient, non-constrained @@ -185,13 +193,13 @@ wvs,R_ig,'g-',... wvs,R_conv,'b:','LineWidth',2); xlabel('\lambda [nm]'); -ylabel('log10[R(\lambda)]'); +ylabel('R(\lambda)'); legend('Meas','IG','Converged','Location','Best'); legend boxoff; grid on; -set(gca,'TickDir','out','FontSize',20); -%title('Inverse solution using pMC/dMC'); -set(f, 'Name', 'Inverse solution using pMC/dMC'); +set(gca,'TickDir','out','FontSize',12); +title('Ex 2: Inverse solution using pMC/dMC'); +set(f, 'Name', 'Ex 2: Inverse solution using pMC/dMC'); disp(sprintf('Meas = [%5.3f %5.3f %5.3f]',measParms(1),measParms(2),measParms(3))); disp(sprintf('IG = [%5.3f %5.3f %5.3f] Chi2=%5.3e',igConc(1),igConc(2),... igConc(3),(measData-R_ig)*(measData-R_ig)')); @@ -201,9 +209,9 @@ abs(measParms(2)-recoveredOPs(2))/measParms(2),abs(measParms(3)-recoveredOPs(3))/measParms(3))); %% ======================================================================= % % Example 3: Inverse solution for R(rho,wavelength) chromophore -% concentrations (Hb, HbO2) and scatterer coefficients (a,b) for +% concentrations (Hb, HbO2) and scatterer coefficients (a,b) for % 4 wavelengths and 2 rho -% define 8 rho, however only 1st and 4th used in inverse problem +% define 8 rho, however only 1st and 4th bins used in inverse problem rhostart=0; rhostop=2; rhocount=8; @@ -226,7 +234,8 @@ n=1.4; igParms = [absorbers.Concentrations(1) absorbers.Concentrations(2) scatterers.Coefficients(1) scatterers.Coefficients(2)]; -% ops has dimensions [numwv 4] NOTE: if using Octave type "pkg load io" in Command Window +% ops has dimensions [numwv 4] 4=[mua,musp,g,n] +% NOTE: if using Octave type "pkg load io" in Command Window % to load IO package and read SpectralDictionary.xlsx in next command [ops,dmua,dmusp]=get_optical_properties(absorbers,scatterers,wvs); @@ -255,7 +264,7 @@ %% use unconstrained optimization lb=[-inf -inf]; ub=[inf inf]; lb=[]; ub=[]; -% input measData taken from vts_solver_demo using Nurbs rhoMidpoint=0.1429,1.0mm and +% input measData taken from vts_solver_demo using Nurbs rhoMidpoints=0.1429,1.0mm and % parameters { 28.4, 22.4, 1.2, 1.42 } measParms = [28.4, 22.4, 1.2, 1.42 ]; measData = [0.2931 0.2548 0.2068 0.1711 0.0255 0.0355 0.0320 0.0277]; @@ -287,14 +296,14 @@ wvs,R_ig(1:length(wvs)),'g-',wvs,R_ig(length(wvs)+1:end),'g--',... wvs,R_conv(1:length(wvs)),'b-',wvs,R_conv(length(wvs)+1:end),'b--','LineWidth',2); xlabel('\lambda [nm]'); -ylabel('log10[R(\lambda)]'); +ylabel('R(\lambda)'); legend('Meas rho=0.1429','Meas rho=1.0','IG rho=0.1429','IG rho=1.0',... 'Converged rho=0.1429','Converged rho=1.0','Location','Best'); legend boxoff; grid on; -set(gca,'TickDir','out','FontSize',20); -title('Inverse solution using pMC/dMC'); -set(f, 'Name', 'Inverse solution using pMC/dMC'); +set(gca,'TickDir','out','FontSize',12); +title('Ex 3: Inverse solution using pMC/dMC'); +set(f, 'Name', 'Ex 3: Inverse solution using pMC/dMC'); disp(sprintf('Meas = [%5.3f %5.3f %5.3f %5.3f]',measParms(1),measParms(2),... measParms(3),measParms(4))); disp(sprintf('IG = [%5.3f %5.3f %5.3f %5.3f] Chi2=%5.3e',igParms(1),igParms(2),... diff --git a/matlab/monte_carlo_inverse/windows/mc_inverse_Win.m b/matlab/monte_carlo_inverse/windows/mc_inverse_Win.m index 54f2e1417..f93e066e6 100644 --- a/matlab/monte_carlo_inverse/windows/mc_inverse_Win.m +++ b/matlab/monte_carlo_inverse/windows/mc_inverse_Win.m @@ -6,12 +6,12 @@ % 2) Example 2: inverse solution for chromophore concentrations % for multiple wavelengths, single rho: use N=10000 in % infile_pMC_db_gen_template.txt. Example specifies -% wv=500:100:1000nm and rho=1mm, +% wvs=500:100:1000nm and rho=1mm, % these selections different than those used in vts_solver_demo.m % 3) Example 3: inverse solution for chromophore concentrations % for multiple wavelengths, two rho: use N=10000 in % infile_pMC_db_gen_template.txt. Example specifies -% wv=600:100:900nm and rho=0.1429mm and 1mm. +% wvs=600:100:900nm and rho=0.1429mm and 1mm. % % Note! This script does not require *MATLAB interop* code to run %% @@ -29,7 +29,7 @@ % 4) normalization of chi2 % 5) optimset options selected %% read in baseline OPs from database gen infile -x0 = [0.01, 5.0]; % baseline values for database and initial guess [mua, mus], i.e musp=1.0 +x0 = [0.01, 5.0]; % baseline values for database and initial guess [mua, mus], i.e. musp=1.0 g = 0.8; % input rho: in inversion don't use last point since includes tallies from % beyond @@ -66,7 +66,7 @@ % run lsqcurvefit if have Optimization Toolbox because it makes use of % dMC differential Monte Carlo predictions % if don't have Optimization Toolbox, run non-gradient, non-constrained -% fminsearch +% fminsearch (use more photons for improved results) if(exist('lsqcurvefit','file')) options = optimset('Jacobian','on','diagnostics','on','largescale','on'); [recoveredOPs,resnorm] = lsqcurvefit('pmc_F_dmc_J_ex1_Win',x0,rhoMidpoints,measData,lb,ub,... @@ -81,11 +81,14 @@ rhoMidpoints(1:end-1),R_ig,'g-',... rhoMidpoints(1:end-1),R_conv,'b:','LineWidth',2); xlabel('\rho [mm]'); -ylabel('log10(R(\rho))'); +ylabel('log10[R(\rho)]'); legend('Meas','IG','Converged','Location','Best'); -title('Inverse solution using pMC/dMC'); -set(f, 'Name', 'Inverse solution using pMC/dMC'); -disp(sprintf('IG = [%f %5.3f]',measParms(1),measParms(2))); +legend boxoff; +grid on; +set(gca,'TickDir','out','FontSize',12); +title('Ex 1: Inverse solution using pMC/dMC'); +set(f, 'Name', 'Ex 1: Inverse solution using pMC/dMC'); +disp(sprintf('Meas = [%f %5.3f]',measParms(1),measParms(2))); disp(sprintf('IG = [%f %5.3f] Chi2=%5.3e',x0(1),x0(2),... (measData-R_ig)*(measData-R_ig)')); disp(sprintf('Conv = [%f %5.3f] Chi2=%5.3e',recoveredOPs(1),recoveredOPs(2),... @@ -101,8 +104,9 @@ % Use generated database to solve inverse problem with measured data % generated using Nurbs and selected concentrations -% following rho specifications just needed to fill out infile template -rhostart=0; +% define 8 rho, however only 4th bin is used in inverse problem +% following rho specifications needed to fill out infile template +rhostart=0; rhostop=2; rhocount=8; rho=linspace(rhostart,rhostop,rhocount); @@ -182,8 +186,11 @@ xlabel('\lambda [nm]'); ylabel('R(\lambda)'); legend('Meas','IG','Converged','Location','Best'); -title('Inverse solution using pMC/dMC'); -set(f, 'Name', 'Inverse solution using pMC/dMC'); +legend boxoff; +grid on; +set(gca,'TickDir','out','FontSize',12); +title('Ex 2: Inverse solution using pMC/dMC'); +set(f, 'Name', 'Ex 2: Inverse solution using pMC/dMC'); disp(sprintf('Meas = [%5.3f %5.3f %5.3f]',measParms(1),measParms(2),measParms(3))); disp(sprintf('IG = [%5.3f %5.3f %5.3f] Chi2=%5.3e',igConc(1),igConc(2),... igConc(3),(measData-R_ig)*(measData-R_ig)')); @@ -192,8 +199,10 @@ disp(sprintf('error= [%5.3f %5.3f %5.3f]',abs(measParms(1)-recoveredOPs(1))/measParms(1),... abs(measParms(2)-recoveredOPs(2))/measParms(2),abs(measParms(3)-recoveredOPs(3))/measParms(3))); %% ======================================================================= % -% Example 3: Inverse solution for R(rho,wavelength) chromophore concentrations -% and scatterer coefficients +% Example 3: Inverse solution for R(rho,wavelength) chromophore +% concentrations (Hb, HbO2) and scatterer coefficients (a,b) for +% 4 wavelengths and 2 rho +% define 8 rho, however only 1st and 4th bins used in inverse problem rhostart=0; rhostop=2; rhocount=8; @@ -274,8 +283,11 @@ ylabel('R(\lambda)'); legend('Meas rho=0.1429','Meas rho=1.0','IG rho=0.01429','IG rho=1.0',... 'Converged rho=0.01429','Converged rho=1.0','Location','Best'); -title('Inverse solution using pMC/dMC'); -set(f, 'Name', 'Inverse solution using pMC/dMC'); +legend boxoff; +grid on; +set(gca,'TickDir','out','FontSize',12); +title('Ex 3: Inverse solution using pMC/dMC'); +set(f, 'Name', 'Ex 3: Inverse solution using pMC/dMC'); disp(sprintf('Meas = [%5.3f %5.3f %5.3f %5.3f]',measParms(1),measParms(2),... measParms(3),measParms(4))); disp(sprintf('IG = [%5.3f %5.3f %5.3f %5.3f] Chi2=%5.3e',igParms(1),igParms(2),... From 7f2314c803c0e8b04f7e8190e48bec5535c9072b Mon Sep 17 00:00:00 2001 From: hayakawa Date: Mon, 23 Sep 2024 16:21:28 -0700 Subject: [PATCH 3/6] Modified get_mua to use readtable instead of xlsread which is obsolete. This meant changing access into data read. This all started because Linux wasn't reading table correctly. --- matlab/monte_carlo_inverse/general/get_mua.m | 25 ++++++++++---------- 1 file changed, 13 insertions(+), 12 deletions(-) diff --git a/matlab/monte_carlo_inverse/general/get_mua.m b/matlab/monte_carlo_inverse/general/get_mua.m index 6ce728cf3..2e71a2338 100644 --- a/matlab/monte_carlo_inverse/general/get_mua.m +++ b/matlab/monte_carlo_inverse/general/get_mua.m @@ -2,27 +2,28 @@ function [mua,dmua]=get_mua(absorbers,wavelengths) persistent data; if isempty(data) - data=xlsread('SpectralDictionary.xlsx'); % file has 1 tab only + data=readtable('SpectralDictionary.xlsx','ReadVariableNames',false,'HeaderLines',1); % file has 1 tab only end -last_line=1202; +% the following assumes all columns in table have same length % read Fat data -wv_fat=data(2:last_line,1); -spec_fat=data(2:last_line,2); +wv_fat=data(:,1); +spec_fat=data(:,2); % read H2O data -wv_h2o=data(2:last_line,3); -spec_h2o=data(2:last_line,4); +wv_h2o=data(:,3); +spec_h2o=data(:,4); % read Hb data -wv_hb=data(2:last_line,5); -spec_hb=data(2:last_line,6); +wv_hb=data(:,5); +spec_hb=data(:,6); % read HbO2 data -wv_hbo2=data(2:last_line,7); -spec_hbo2=data(2:last_line,8); +wv_hbo2=data(:,7); +spec_hbo2=data(:,8); % read melanin data -wv_melanin=data(2:last_line,9); -spec_melanin=data(2:last_line,10); +wv_melanin=data(:,9); +spec_melanin=data(:,10); mua=zeros(1,length(wavelengths)); dmua=zeros(length(wavelengths),length(absorbers.Names)); +values=zeros(1,length(wavelengths)); for i=1:length(absorbers.Names) % determine if spectra is in molar absorption coefficients or fractional abs coefficient if (strcmp(absorbers.Names(i),'Fat')) % fractional From a26f77e6ebe144f27d1018f43c5043b343c05e04 Mon Sep 17 00:00:00 2001 From: hayakawa Date: Mon, 23 Sep 2024 19:00:34 -0700 Subject: [PATCH 4/6] Modified readtable to readmatrix because readmatrix takes away headers. --- matlab/monte_carlo_inverse/general/get_mua.m | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/matlab/monte_carlo_inverse/general/get_mua.m b/matlab/monte_carlo_inverse/general/get_mua.m index 2e71a2338..d55c1fa4c 100644 --- a/matlab/monte_carlo_inverse/general/get_mua.m +++ b/matlab/monte_carlo_inverse/general/get_mua.m @@ -2,7 +2,7 @@ function [mua,dmua]=get_mua(absorbers,wavelengths) persistent data; if isempty(data) - data=readtable('SpectralDictionary.xlsx','ReadVariableNames',false,'HeaderLines',1); % file has 1 tab only + data=readmatrix('SpectralDictionary.xlsx','Range','A2:J1202'); % file has 1 tab only end % the following assumes all columns in table have same length % read Fat data From 9fcbce3c72eaccff75fdac6515909c876d3d8b3f Mon Sep 17 00:00:00 2001 From: hayakawa Date: Tue, 24 Sep 2024 11:53:43 -0700 Subject: [PATCH 5/6] Found an error in the setting of the measParms in Example 1. Did not affect inversion solution, just affected output at end. --- matlab/monte_carlo_inverse/windows/mc_inverse_Win.m | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/matlab/monte_carlo_inverse/windows/mc_inverse_Win.m b/matlab/monte_carlo_inverse/windows/mc_inverse_Win.m index f93e066e6..48ef9ad29 100644 --- a/matlab/monte_carlo_inverse/windows/mc_inverse_Win.m +++ b/matlab/monte_carlo_inverse/windows/mc_inverse_Win.m @@ -55,7 +55,7 @@ lb=[]; ub=[]; % input measData -measParms = [ 0.04 0.95 ]; % mua, musp +measParms = [ 0.04 4.75 ]; % mua, mus, i.e. musp=0.95 measData = [0.0331 0.0099 0.0042 0.0020 0.0010]; % option: divide measured data and forward model by measured data From dfd209daf810186d3311bd6fe04b1b9852f0cbe5 Mon Sep 17 00:00:00 2001 From: hayakawa Date: Tue, 24 Sep 2024 12:27:35 -0700 Subject: [PATCH 6/6] Missed updating Linux comments that I corrected in mc_inverse_Win.m --- matlab/monte_carlo_inverse/linux_and_mac/mc_inverse.m | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/matlab/monte_carlo_inverse/linux_and_mac/mc_inverse.m b/matlab/monte_carlo_inverse/linux_and_mac/mc_inverse.m index ce86d1cfb..cf52d9a94 100644 --- a/matlab/monte_carlo_inverse/linux_and_mac/mc_inverse.m +++ b/matlab/monte_carlo_inverse/linux_and_mac/mc_inverse.m @@ -55,7 +55,7 @@ lb=[]; ub=[]; % input measData -measParms = [ 0.04 0.95 ]; % mua, musp +measParms = [ 0.04 4.75 ]; % mua, mus, i.e. musp=0.95 measData = [0.0331 0.0099 0.0042 0.0020 0.0010]; % option: divide measured data and forward model by measured data