diff --git a/Code/Script_ISBI_simulated_shortened.m b/Code/Script_ISBI_simulated_shortened.m old mode 100644 new mode 100755 index c87d210..74fc789 --- a/Code/Script_ISBI_simulated_shortened.m +++ b/Code/Script_ISBI_simulated_shortened.m @@ -1,136 +1,185 @@ % Parameters n_ROI = 200; Nc = 4; min_comm = 40; WD = 1/n_ROI; n_TP = 900; -is_plot = 1; -Std = 0.5; -n_rn = 150; +is_plot = 0; + + c_fac = 4; Type = 2; % Computation f_nodes = 0.2; n_iter = 10; epsilon = 1e-2; is_epsilon = 1; n_BW = 10; warning off -% Number of times I want to generate data and analyse it n_trials = 20; -for n = 1:n_trials +idx_std = 1; + +for Std = 0:0.5:4 + + disp(['Std = ',num2str(Std),'...']); - disp(['Trial ',num2str(n),'...']); + idx_rn = 1; - % Generation of one entity - [W,X_GT,X_noisy,MSE_start,S,n_S,S_rest] = GSP_GenerateData(n_ROI,Nc,min_comm,WD,n_TP,is_plot,Std,n_rn,c_fac,Type); - [MSE_GFT,MSE_LGFT,MSE_LGFT_SS,MSE_SLEP,MSE_SLEP_SS] = GSP_QuantifyError(W,X_noisy,X_GT,S,n_S,f_nodes,n_iter,epsilon,is_epsilon,n_BW,n_ROI); + for n_rn = 0:20:200 + + disp(['n_RN = ',num2str(n_rn),'...']); + + for n = 1:n_trials; - % Now I want to compute an optimal scheme for each case: basically it is - % going to be one parameter + disp(['Trial ',num2str(n),'...']); - % For GFT - E_min = realmax; - Lambda_opt = []; + % Generation of one entity + [W,X_GT,X_noisy,MSE_start,S,n_S,S_rest] = GSP_GenerateData(n_ROI,Nc,min_comm,WD,n_TP,is_plot,Std,n_rn,c_fac,Type); + [MSE_GFT,MSE_LGFT,MSE_LGFT_SS,MSE_SLEP,MSE_SLEP_SS] = GSP_QuantifyError(W,X_noisy,X_GT,S,n_S,f_nodes,n_iter,epsilon,is_epsilon,n_BW,n_ROI); - for i = 1:size(MSE_GFT,2) - tmp_E = mean(MSE_GFT(S,i)); + % Now I want to compute an optimal scheme for each case: basically it is + % going to be one parameter - if tmp_E <= E_min - E_min = tmp_E; - Lambda_opt = i; - end - end + % For GFT + E_min = realmax; + Lambda_opt = []; - Error_GFT(n) = mean(MSE_GFT(S,Lambda_opt)); + for i = 1:size(MSE_GFT,2) + tmp_E = mean(MSE_GFT(S,i)); - - % For LGFT - E_min = realmax; - Lambda_opt = []; + if tmp_E <= E_min + E_min = tmp_E; + Lambda_opt = i; + end + end - for i = 1:size(MSE_LGFT,2) - tmp_E = mean(MSE_LGFT(S,i)); + Error_GFT(idx_std,idx_rn,n) = mean(MSE_GFT(S,Lambda_opt)); - if tmp_E <= E_min - E_min = tmp_E; - Lambda_opt = i; - end - end - Error_LGFT(n) = mean(MSE_LGFT(S,Lambda_opt)); + % For LGFT + E_min = realmax; + Lambda_opt = []; - % For LGFT subset - E_min = realmax; - Lambda_opt = []; + for i = 1:size(MSE_LGFT,2) + tmp_E = mean(MSE_LGFT(S,i)); - for i = 1:size(MSE_LGFT_SS,2) - tmp_E = nanmean(MSE_LGFT_SS,3); - tmp_E = nanmean(tmp_E(S,i)); + if tmp_E <= E_min + E_min = tmp_E; + Lambda_opt = i; + end + end - if tmp_E <= E_min - E_min = tmp_E; - Lambda_opt = i; - end - end + Error_LGFT(idx_std,idx_rn,n) = mean(MSE_LGFT(S,Lambda_opt)); - E_LGFT_SS = squeeze(MSE_LGFT_SS(S,Lambda_opt,:)); - Error_LGFT_SS(n) = nanmean(nanmean(E_LGFT_SS)); + % For LGFT subset + E_min = realmax; + Lambda_opt = []; - % For Slepians - E_min = realmax; - Lambda_opt = []; - BW_opt = []; + for i = 1:size(MSE_LGFT_SS,2) + tmp_E = nanmean(MSE_LGFT_SS,3); + tmp_E = nanmean(tmp_E(S,i)); - for i = 1:size(MSE_SLEP,2) - for j = 1:size(MSE_SLEP,3) - tmp_E = mean(MSE_SLEP(S,i,j)); + if tmp_E <= E_min + E_min = tmp_E; + Lambda_opt = i; + end + end + + E_LGFT_SS = squeeze(MSE_LGFT_SS(S,Lambda_opt,:)); + Error_LGFT_SS(idx_std,idx_rn,n) = nanmean(nanmean(E_LGFT_SS)); + + % For Slepians + E_min = realmax; + Lambda_opt = []; + BW_opt = []; - if tmp_E <= E_min - E_min = tmp_E; - Lambda_opt = i; - BW_opt = j; + for i = 1:size(MSE_SLEP,2) + for j = 1:size(MSE_SLEP,3) + tmp_E = mean(MSE_SLEP(S,i,j)); + + if tmp_E <= E_min + E_min = tmp_E; + Lambda_opt = i; + BW_opt = j; + end + end end - end - end - Error_SLEP(n) = mean(MSE_SLEP(S,Lambda_opt,BW_opt)); + Error_SLEP(idx_std,idx_rn,n) = mean(MSE_SLEP(S,Lambda_opt,BW_opt)); - % For Slepians subset - E_min = realmax; - Lambda_opt = []; - BW_opt = []; + % For Slepians subset + E_min = realmax; + Lambda_opt = []; + BW_opt = []; - for i = 1:size(MSE_SLEP_SS,2) - for j = 1:size(MSE_SLEP_SS,3) + for i = 1:size(MSE_SLEP_SS,2) + for j = 1:size(MSE_SLEP_SS,3) - tmp_E = mean(MSE_SLEP_SS,4); - tmp_E = mean(tmp_E(S,i,j)); + tmp_E = mean(MSE_SLEP_SS,4); + tmp_E = mean(tmp_E(S,i,j)); - if tmp_E <= E_min - E_min = tmp_E; - Lambda_opt = i; - BW_opt = j; + if tmp_E <= E_min + E_min = tmp_E; + Lambda_opt = i; + BW_opt = j; + end + end end + + E_SLEP_SS = squeeze(MSE_SLEP_SS(S,Lambda_opt,BW_opt,:)); + Error_SLEP_SS(idx_std,idx_rn,n) = mean(mean(E_SLEP_SS)); end + + idx_rn = idx_rn + 1; end - - E_SLEP_SS = squeeze(MSE_SLEP_SS(S,Lambda_opt,BW_opt,:)); - Error_SLEP_SS(n) = mean(mean(E_SLEP_SS)); -end + idx_std = idx_std + 1; +end + +save('Errors','Error_GFT','Error_LGFT','Error_LGFT_SS','Error_SLEP','Error_SLEP_SS'); + figure; set(gcf,'color','w'); -set(gca,'Box','off'); -plot(1:n_trials,Error_GFT,'color',[0 0.4 0.8],'LineWidth',2); -hold on; -plot(1:n_trials,Error_LGFT,'color',[0.6 0 0],'LineWidth',2); -plot(1:n_trials,Error_LGFT_SS,'color',[0.6 0.6 0.4],'LineWidth',2); -plot(1:n_trials,Error_SLEP,'color',[1 0 0.2],'LineWidth',2); -plot(1:n_trials,Error_SLEP_SS,'color',[1 0.6 0],'LineWidth',2); -legend('GFT','LGFT','LGFT SS','Slep','Slep SS'); \ No newline at end of file +subplot(2,3,1); +surf(0:20:200,0:0.5:4,mean(Error_GFT,3)); +zlim([0 0.4]); +caxis([0 0.28]); +colormap(jet); +subplot(2,3,2); +surf(0:20:200,0:0.5:4,mean(Error_LGFT,3)); +zlim([0 0.4]); +caxis([0 0.4]); +colormap(jet); +subplot(2,3,3); +surf(0:20:200,0:0.5:4,mean(Error_LGFT_SS,3)); +zlim([0 0.4]); +caxis([0 0.4]); +colormap(jet); +subplot(2,3,4); +surf(0:20:200,0:0.5:4,mean(Error_SLEP,3)); +zlim([0 0.4]); +caxis([0 0.4]); +colormap(jet); +subplot(2,3,5); +surf(0:20:200,0:0.5:4,mean(Error_SLEP_SS,3)); +zlim([0 0.4]); +caxis([0 0.4]); +colormap(jet); + + + +% figure; +% set(gcf,'color','w'); +% set(gca,'Box','off'); +% plot(1:n_trials,Error_GFT,'color',[0 0.4 0.8],'LineWidth',2); +% hold on; +% plot(1:n_trials,Error_LGFT,'color',[0.6 0 0],'LineWidth',2); +% plot(1:n_trials,Error_LGFT_SS,'color',[0.6 0.6 0.4],'LineWidth',2); +% plot(1:n_trials,Error_SLEP,'color',[1 0 0.2],'LineWidth',2); +% plot(1:n_trials,Error_SLEP_SS,'color',[1 0.6 0],'LineWidth',2); +% legend('GFT','LGFT','LGFT SS','Slep','Slep SS'); \ No newline at end of file diff --git a/Data/Errors.mat b/Data/Errors.mat new file mode 100644 index 0000000..87dc130 Binary files /dev/null and b/Data/Errors.mat differ diff --git a/ISBI2018_Abstract/Slepians.aux b/ISBI2018_Abstract/Slepians.aux index a147d72..efc0aaa 100644 --- a/ISBI2018_Abstract/Slepians.aux +++ b/ISBI2018_Abstract/Slepians.aux @@ -1,21 +1,23 @@ \relax \@writefile{toc}{\contentsline {section}{\numberline {1} Introduction}{1}} \newlabel{sec:intro}{{1}{1}} \@writefile{toc}{\contentsline {section}{\numberline {2} Methods}{1}} \newlabel{sec:methods}{{2}{1}} \@writefile{toc}{\contentsline {subsection}{\numberline {2.1} Graph signal processing basics}{1}} +\@writefile{toc}{\contentsline {subsection}{\numberline {2.2} Slepian vectors}{2}} +\@writefile{toc}{\contentsline {subsection}{\numberline {2.3} Evaluations on simulated data}{2}} +\@writefile{toc}{\contentsline {subsection}{\numberline {2.4} Exploratory application to real fMRI data}{2}} +\@writefile{toc}{\contentsline {section}{\numberline {3} Results}{2}} +\newlabel{sec:results}{{3}{2}} +\@writefile{toc}{\contentsline {subsection}{\numberline {3.1} Evaluations on simulated data}{2}} \citation{C2} \bibstyle{IEEEbib} \bibdata{strings,refs} \bibcite{Lamp86}{1} \bibcite{C2}{2} -\@writefile{toc}{\contentsline {subsection}{\numberline {2.2} Slepian vectors}{2}} -\@writefile{toc}{\contentsline {section}{\numberline {3} Results}{2}} -\newlabel{sec:results}{{3}{2}} -\@writefile{toc}{\contentsline {subsection}{\numberline {3.1} Simulated data}{2}} -\@writefile{toc}{\contentsline {subsection}{\numberline {3.2} Real fMRI data}{2}} -\@writefile{toc}{\contentsline {section}{\numberline {4} Discussion}{2}} -\newlabel{sec:discussion}{{4}{2}} -\@writefile{lof}{\contentsline {figure}{\numberline {1}{\ignorespaces Example of placing a figure with experimental results.}}{2}} -\newlabel{fig:res}{{1}{2}} -\@writefile{toc}{\contentsline {section}{\numberline {5} References}{2}} +\@writefile{toc}{\contentsline {subsection}{\numberline {3.2} Exploratory application to real fMRI data}{3}} +\@writefile{toc}{\contentsline {section}{\numberline {4} Discussion}{3}} +\newlabel{sec:discussion}{{4}{3}} +\@writefile{lof}{\contentsline {figure}{\numberline {1}{\ignorespaces Example of placing a figure with experimental results.}}{3}} +\newlabel{fig:res}{{1}{3}} +\@writefile{toc}{\contentsline {section}{\numberline {5} References}{3}} diff --git a/ISBI2018_Abstract/Slepians.blg b/ISBI2018_Abstract/Slepians.blg deleted file mode 100644 index 4011ed7..0000000 --- a/ISBI2018_Abstract/Slepians.blg +++ /dev/null @@ -1,47 +0,0 @@ -This is BibTeX, Version 0.99d (TeX Live 2017) -Capacity: max_strings=100000, hash_size=100000, hash_prime=85009 -The top-level auxiliary file: Slepians.aux -The style file: IEEEbib.bst -Database file #1: strings.bib -Database file #2: refs.bib -You've used 2 entries, - 1838 wiz_defined-function locations, - 472 strings with 3692 characters, -and the built_in function-call counts, 645 in all, are: -= -- 60 -> -- 22 -< -- 2 -+ -- 8 -- -- 6 -* -- 51 -:= -- 97 -add.period$ -- 3 -call.type$ -- 2 -change.case$ -- 1 -chr.to.int$ -- 0 -cite$ -- 2 -duplicate$ -- 29 -empty$ -- 62 -format.name$ -- 6 -if$ -- 153 -int.to.chr$ -- 0 -int.to.str$ -- 2 -missing$ -- 2 -newline$ -- 13 -num.names$ -- 2 -pop$ -- 6 -preamble$ -- 1 -purify$ -- 0 -quote$ -- 0 -skip$ -- 17 -stack$ -- 0 -substring$ -- 49 -swap$ -- 13 -text.length$ -- 2 -text.prefix$ -- 0 -top$ -- 0 -type$ -- 0 -warning$ -- 0 -while$ -- 5 -width$ -- 3 -write$ -- 26 diff --git a/ISBI2018_Abstract/Slepians.log b/ISBI2018_Abstract/Slepians.log index 6ea38d4..cb4e747 100644 --- a/ISBI2018_Abstract/Slepians.log +++ b/ISBI2018_Abstract/Slepians.log @@ -1,319 +1,324 @@ -This is pdfTeX, Version 3.14159265-2.6-1.40.18 (TeX Live 2017) (preloaded format=pdflatex 2017.8.24) 12 OCT 2017 18:50 +This is pdfTeX, Version 3.14159265-2.6-1.40.18 (TeX Live 2017) (preloaded format=pdflatex 2017.8.24) 13 OCT 2017 17:51 entering extended mode restricted \write18 enabled. file:line:error style messages enabled. %&-line parsing enabled. **Slepians.tex (./Slepians.tex LaTeX2e <2017-04-15> Babel <3.10> and hyphenation patterns for 84 language(s) loaded. (/usr/local/texlive/2017/texmf-dist/tex/latex/base/article.cls Document Class: article 2014/09/29 v1.4h Standard LaTeX document class (/usr/local/texlive/2017/texmf-dist/tex/latex/base/size10.clo File: size10.clo 2014/09/29 v1.4h Standard LaTeX file (size option) ) \c@part=\count79 \c@section=\count80 \c@subsection=\count81 \c@subsubsection=\count82 \c@paragraph=\count83 \c@subparagraph=\count84 \c@figure=\count85 \c@table=\count86 \abovecaptionskip=\skip41 \belowcaptionskip=\skip42 \bibindent=\dimen102 ) (./spconf.sty) (/usr/local/texlive/2017/texmf-dist/tex/latex/amsmath/amsmath.sty Package: amsmath 2016/11/05 v2.16a AMS math features \@mathmargin=\skip43 For additional information on amsmath, use the `?' option. (/usr/local/texlive/2017/texmf-dist/tex/latex/amsmath/amstext.sty Package: amstext 2000/06/29 v2.01 AMS text (/usr/local/texlive/2017/texmf-dist/tex/latex/amsmath/amsgen.sty File: amsgen.sty 1999/11/30 v2.0 generic functions \@emptytoks=\toks14 \ex@=\dimen103 )) (/usr/local/texlive/2017/texmf-dist/tex/latex/amsmath/amsbsy.sty Package: amsbsy 1999/11/29 v1.2d Bold Symbols \pmbraise@=\dimen104 ) (/usr/local/texlive/2017/texmf-dist/tex/latex/amsmath/amsopn.sty Package: amsopn 2016/03/08 v2.02 operator names ) \inf@bad=\count87 LaTeX Info: Redefining \frac on input line 213. \uproot@=\count88 \leftroot@=\count89 LaTeX Info: Redefining \overline on input line 375. \classnum@=\count90 \DOTSCASE@=\count91 LaTeX Info: Redefining \ldots on input line 472. LaTeX Info: Redefining \dots on input line 475. LaTeX Info: Redefining \cdots on input line 596. \Mathstrutbox@=\box26 \strutbox@=\box27 \big@size=\dimen105 LaTeX Font Info: Redeclaring font encoding OML on input line 712. LaTeX Font Info: Redeclaring font encoding OMS on input line 713. \macc@depth=\count92 \c@MaxMatrixCols=\count93 \dotsspace@=\muskip10 \c@parentequation=\count94 \dspbrk@lvl=\count95 \tag@help=\toks15 \row@=\count96 \column@=\count97 \maxfields@=\count98 \andhelp@=\toks16 \eqnshift@=\dimen106 \alignsep@=\dimen107 \tagshift@=\dimen108 \tagwidth@=\dimen109 \totwidth@=\dimen110 \lineht@=\dimen111 \@envbody=\toks17 \multlinegap=\skip44 \multlinetaggap=\skip45 \mathdisplay@stack=\toks18 LaTeX Info: Redefining \[ on input line 2817. LaTeX Info: Redefining \] on input line 2818. ) (/usr/local/texlive/2017/texmf-dist/tex/latex/graphics/graphicx.sty Package: graphicx 2014/10/28 v1.0g Enhanced LaTeX Graphics (DPC,SPQR) (/usr/local/texlive/2017/texmf-dist/tex/latex/graphics/keyval.sty Package: keyval 2014/10/28 v1.15 key=value parser (DPC) \KV@toks@=\toks19 ) (/usr/local/texlive/2017/texmf-dist/tex/latex/graphics/graphics.sty Package: graphics 2017/04/14 v1.1b Standard LaTeX Graphics (DPC,SPQR) (/usr/local/texlive/2017/texmf-dist/tex/latex/graphics/trig.sty Package: trig 2016/01/03 v1.10 sin cos tan (DPC) ) (/usr/local/texlive/2017/texmf-dist/tex/latex/graphics-cfg/graphics.cfg File: graphics.cfg 2016/06/04 v1.11 sample graphics configuration ) Package graphics Info: Driver file: pdftex.def on input line 99. (/usr/local/texlive/2017/texmf-dist/tex/latex/graphics-def/pdftex.def File: pdftex.def 2017/01/12 v0.06k Graphics/color for pdfTeX (/usr/local/texlive/2017/texmf-dist/tex/generic/oberdiek/infwarerr.sty Package: infwarerr 2016/05/16 v1.4 Providing info/warning/error messages (HO) ) (/usr/local/texlive/2017/texmf-dist/tex/generic/oberdiek/ltxcmds.sty Package: ltxcmds 2016/05/16 v1.23 LaTeX kernel commands for general use (HO) ) \Gread@gobject=\count99 )) \Gin@req@height=\dimen112 \Gin@req@width=\dimen113 ) (/usr/local/texlive/2017/texmf-dist/tex/latex/amsfonts/amssymb.sty Package: amssymb 2013/01/14 v3.01 AMS font symbols (/usr/local/texlive/2017/texmf-dist/tex/latex/amsfonts/amsfonts.sty Package: amsfonts 2013/01/14 v3.01 Basic AMSFonts support \symAMSa=\mathgroup4 \symAMSb=\mathgroup5 LaTeX Font Info: Overwriting math alphabet `\mathfrak' in version `bold' (Font) U/euf/m/n --> U/euf/b/n on input line 106. )) (./Slepians.aux) \openout1 = `Slepians.aux'. LaTeX Font Info: Checking defaults for OML/cmm/m/it on input line 26. LaTeX Font Info: ... okay on input line 26. LaTeX Font Info: Checking defaults for T1/cmr/m/n on input line 26. LaTeX Font Info: ... okay on input line 26. LaTeX Font Info: Checking defaults for OT1/cmr/m/n on input line 26. LaTeX Font Info: ... okay on input line 26. LaTeX Font Info: Checking defaults for OMS/cmsy/m/n on input line 26. LaTeX Font Info: ... okay on input line 26. LaTeX Font Info: Checking defaults for OMX/cmex/m/n on input line 26. LaTeX Font Info: ... okay on input line 26. LaTeX Font Info: Checking defaults for U/cmr/m/n on input line 26. LaTeX Font Info: ... okay on input line 26. LaTeX Font Info: Try loading font information for OT1+ptm on input line 26. (/usr/local/texlive/2017/texmf-dist/tex/latex/psnfss/ot1ptm.fd File: ot1ptm.fd 2001/06/04 font definitions for OT1/ptm. ) (/usr/local/texlive/2017/texmf-dist/tex/context/base/mkii/supp-pdf.mkii [Loading MPS to PDF converter (version 2006.09.02).] \scratchcounter=\count100 \scratchdimen=\dimen114 \scratchbox=\box28 \nofMPsegments=\count101 \nofMParguments=\count102 \everyMPshowfont=\toks20 \MPscratchCnt=\count103 \MPscratchDim=\dimen115 \MPnumerator=\count104 \makeMPintoPDFobject=\count105 \everyMPtoPDFconversion=\toks21 ) (/usr/local/texlive/2017/texmf-dist/tex/generic/oberdiek/pdftexcmds.sty Package: pdftexcmds 2017/03/19 v0.25 Utility functions of pdfTeX for LuaTeX (HO ) (/usr/local/texlive/2017/texmf-dist/tex/generic/oberdiek/ifluatex.sty Package: ifluatex 2016/05/16 v1.4 Provides the ifluatex switch (HO) Package ifluatex Info: LuaTeX not detected. ) (/usr/local/texlive/2017/texmf-dist/tex/generic/oberdiek/ifpdf.sty Package: ifpdf 2017/03/15 v3.2 Provides the ifpdf switch ) Package pdftexcmds Info: LuaTeX not detected. Package pdftexcmds Info: \pdf@primitive is available. Package pdftexcmds Info: \pdf@ifprimitive is available. Package pdftexcmds Info: \pdfdraftmode found. ) (/usr/local/texlive/2017/texmf-dist/tex/latex/oberdiek/epstopdf-base.sty Package: epstopdf-base 2016/05/15 v2.6 Base part for package epstopdf (/usr/local/texlive/2017/texmf-dist/tex/latex/oberdiek/grfext.sty Package: grfext 2016/05/16 v1.2 Manage graphics extensions (HO) (/usr/local/texlive/2017/texmf-dist/tex/generic/oberdiek/kvdefinekeys.sty Package: kvdefinekeys 2016/05/16 v1.4 Define keys (HO) )) (/usr/local/texlive/2017/texmf-dist/tex/latex/oberdiek/kvoptions.sty Package: kvoptions 2016/05/16 v3.12 Key value format for package options (HO) (/usr/local/texlive/2017/texmf-dist/tex/generic/oberdiek/kvsetkeys.sty Package: kvsetkeys 2016/05/16 v1.17 Key value parser (HO) (/usr/local/texlive/2017/texmf-dist/tex/generic/oberdiek/etexcmds.sty Package: etexcmds 2016/05/16 v1.6 Avoid name clashes with e-TeX commands (HO) Package etexcmds Info: Could not find \expanded. (etexcmds) That can mean that you are not using pdfTeX 1.50 or (etexcmds) that some package has redefined \expanded. (etexcmds) In the latter case, load this package earlier. ))) Package epstopdf-base Info: Redefining graphics rule for `.eps' on input line 4 38. Package grfext Info: Graphics extension search list: (grfext) [.png,.pdf,.jpg,.mps,.jpeg,.jbig2,.jb2,.PNG,.PDF,.JPG,.JPE G,.JBIG2,.JB2,.eps] (grfext) \AppendGraphicsExtensions on input line 456. (/usr/local/texlive/2017/texmf-dist/tex/latex/latexconfig/epstopdf-sys.cfg File: epstopdf-sys.cfg 2010/07/13 v1.3 Configuration of (r)epstopdf for TeX Liv e )) LaTeX Font Info: Font shape `OT1/ptm/bx/n' in size <12> not available (Font) Font shape `OT1/ptm/b/n' tried instead on input line 29. LaTeX Font Info: Try loading font information for U+msa on input line 29. (/usr/local/texlive/2017/texmf-dist/tex/latex/amsfonts/umsa.fd File: umsa.fd 2013/01/14 v3.01 AMS symbols A ) LaTeX Font Info: Try loading font information for U+msb on input line 29. (/usr/local/texlive/2017/texmf-dist/tex/latex/amsfonts/umsb.fd File: umsb.fd 2013/01/14 v3.01 AMS symbols B ) LaTeX Font Info: Font shape `OT1/ptm/bx/n' in size <10> not available (Font) Font shape `OT1/ptm/b/n' tried instead on input line 31. LaTeX Font Info: Font shape `OT1/ptm/bx/it' in size <10> not available (Font) Font shape `OT1/ptm/b/it' tried instead on input line 35. [1{/usr/local/texlive/2017/texmf-var/fonts/map/pdftex/updmap/pdftex.map} ] -Overfull \hbox (4.24074pt too wide) in paragraph at lines 80--81 -[]\OT1/ptm/m/n/10 If we de-note the new set by the ma-trix $\OT1/cmr/bx/n/10 S -\OT1/cmr/m/n/10 = [[]\OMS/cmsy/m/n/10 j[]j [] j[]\OT1/cmr/m/n/10 ]$\OT1/ptm/m/n -/10 , +Underfull \hbox (badness 1117) in paragraph at lines 107--108 +\OT1/ptm/m/n/10 re-spec-tive cut-off pa-ram-e-ters BLABLA1, BLABLA2 and + [] + +[2] +Overfull \hbox (0.38379pt too wide) in paragraph at lines 125--126 +\OT1/ptm/m/n/10 with SLEP com-pared to the two other ap-proaches. Faces/body [] Package epstopdf Info: Source file: (epstopdf) date: 2015-09-21 14:44:34 (epstopdf) size: 381618 bytes (epstopdf) Output file: (epstopdf) date: 2017-10-12 12:15:57 (epstopdf) size: 12642 bytes (epstopdf) Command: -(epstopdf) \includegraphics on input line 115. +(epstopdf) \includegraphics on input line 146. Package epstopdf Info: Output file is already uptodate. - + File: image1-eps-converted-to.pdf Graphic file (type pdf) -Package pdftex.def Info: image1-eps-converted-to.pdf used on input line 115. +Package pdftex.def Info: image1-eps-converted-to.pdf used on input line 146. (pdftex.def) Requested size: 241.84842pt x 56.43285pt. Package epstopdf Info: Source file: (epstopdf) date: 2015-09-21 14:44:34 (epstopdf) size: 387374 bytes (epstopdf) Output file: (epstopdf) date: 2017-10-12 12:15:57 (epstopdf) size: 13074 bytes (epstopdf) Command: -(epstopdf) \includegraphics on input line 122. +(epstopdf) \includegraphics on input line 153. Package epstopdf Info: Output file is already uptodate. - + File: image2-eps-converted-to.pdf Graphic file (type pdf) -Package pdftex.def Info: image2-eps-converted-to.pdf used on input line 122. +Package pdftex.def Info: image2-eps-converted-to.pdf used on input line 153. (pdftex.def) Requested size: 113.81102pt x 70.17142pt. Package epstopdf Info: Source file: (epstopdf) date: 2015-09-21 14:44:34 (epstopdf) size: 229254 bytes (epstopdf) Output file: (epstopdf) date: 2017-10-12 12:15:58 (epstopdf) size: 10135 bytes (epstopdf) Command: -(epstopdf) \includegraphics on input line 129. +(epstopdf) \includegraphics on input line 160. Package epstopdf Info: Output file is already uptodate. - + File: image3-eps-converted-to.pdf Graphic file (type pdf) -Package pdftex.def Info: image3-eps-converted-to.pdf used on input line 129. +Package pdftex.def Info: image3-eps-converted-to.pdf used on input line 160. (pdftex.def) Requested size: 113.81102pt x 81.7108pt. - (./Slepians.bbl) [2 <./image1-eps-converted-to.pdf> <./image2-eps-converted-to + (./Slepians.bbl) [3 <./image1-eps-converted-to.pdf> <./image2-eps-converted-to .pdf> <./image3-eps-converted-to.pdf>] (./Slepians.aux) ) Here is how much of TeX's memory you used: 2514 strings out of 492995 33379 string characters out of 6132704 - 99892 words of memory out of 5000000 + 101892 words of memory out of 5000000 6002 multiletter control sequences out of 15000+600000 23915 words of font info for 59 fonts, out of 8000000 for 9000 1141 hyphenation exceptions out of 8191 - 39i,10n,26p,1268b,283s stack positions out of 5000i,500n,10000p,200000b,80000s + 39i,10n,26p,1268b,281s stack positions out of 5000i,500n,10000p,200000b,80000s {/usr/local/texlive/2017/texmf-dist/fonts/enc/dvips/base/8r.e nc} < /usr/local/texlive/2017/texmf-dist/fonts/type1/public/amsfonts/cm/cmmi10.pfb> -Output written on Slepians.pdf (2 pages, 193939 bytes). +usr/local/texlive/2017/texmf-dist/fonts/type1/public/amsfonts/cm/cmmi5.pfb> +Output written on Slepians.pdf (3 pages, 222171 bytes). PDF statistics: - 104 PDF objects out of 1000 (max. 8388607) - 73 compressed objects within 1 object stream + 115 PDF objects out of 1000 (max. 8388607) + 81 compressed objects within 1 object stream 0 named destinations out of 1000 (max. 500000) 16 words of extra memory for PDF output out of 10000 (max. 10000000) diff --git a/ISBI2018_Abstract/Slepians.pdf b/ISBI2018_Abstract/Slepians.pdf index c58e287..b632291 100644 Binary files a/ISBI2018_Abstract/Slepians.pdf and b/ISBI2018_Abstract/Slepians.pdf differ diff --git a/ISBI2018_Abstract/Slepians.synctex.gz b/ISBI2018_Abstract/Slepians.synctex.gz index 17c695a..af0a4ab 100644 Binary files a/ISBI2018_Abstract/Slepians.synctex.gz and b/ISBI2018_Abstract/Slepians.synctex.gz differ diff --git a/ISBI2018_Abstract/Slepians.tex b/ISBI2018_Abstract/Slepians.tex index e34faf9..a2d5848 100755 --- a/ISBI2018_Abstract/Slepians.tex +++ b/ISBI2018_Abstract/Slepians.tex @@ -1,155 +1,186 @@ % Template for ISBI-2018 paper; to be used with: % spconf.sty - ICASSP/ICIP LaTeX style file, and % IEEEbib.bst - IEEE bibliography style file. % -------------------------------------------------------------------------- \documentclass{article} \usepackage{spconf,amsmath,graphicx} \usepackage{amssymb} \DeclareMathOperator*{\argmin}{\arg\!\min} % Example definitions. % -------------------- \def\x{{\mathbf x}} \def\L{{\cal L}} % Title. % ------ \title{Slepians: a generalized graph Fourier transform to resolve localised functional brain interactions} % % Single address. % --------------- \name{Thomas AW Bolton$^{\star \dagger \ddagger}$, Younes Farouj$^{\star \dagger \ddagger}$, Dimitri Van De Ville$^{\star \dagger}$\thanks{$^{\ddagger}$ Both authors contributed equally.}} \address{$^{\star}$ Institute of Bioengineering, Ecole Polytechnique Federale de Lausanne (EPFL), Switzerland \\ $^{\dagger}$ Department of Radiology and Medical Informatics, University of Geneva (UNIGE), Switzerland} \begin{document} %\ninept % \maketitle % \begin{abstract} Neuroscience research is boring, because it lacks exotic mathematical tricks. Here, we introduce such a convoluted approach in the form of Slepians. Neuroscience research is boring, because it lacks exotic mathematical tricks. Here, we introduce such a convoluted approach in the form of Slepians. Neuroscience research is boring, because it lacks exotic mathematical tricks. Here, we introduce such a convoluted approach in the form of Slepians. Neuroscience research is boring, because it lacks exotic mathematical tricks. Here, we introduce such a convoluted approach in the form of Slepians. Neuroscience research is boring, because it lacks exotic mathematical tricks. Here, we introduce such a convoluted approach in the form of Slepians. \end{abstract} % \begin{keywords} Graph Fourier transform, Slepians, Graph signal processing \end{keywords} % \section{Introduction} \label{sec:intro} % How can we study the brain from the structural point of view ? Magnetic resonance imaging (MRI) has opened a number of avenues for the study of the brain. At the structural level, diffusion MRI enables to resolve the physical connectivity that exists between different regions. Viewed from the prism of graph analysis, this information is embedded in an adjacency matrix, which can then be decomposed into a set of canonical structural elements, commonly termed the \textit{eigenmodes}. % What about the functional side ? We would like to combine both aspects ! In parallel, functional MRI offers a window on brain activity over time, and on its dynamics at rest or upon cognitive challenge. There is an exquisite relationship between brain function and the underlying structural scaffold; for this reason, bimodal analytical approaches that can combine those two pieces of information are particularly tailored, and an emerging topic of interest. % Describe more precisely that in GSP, we express the signal as a combination of those building blocks In particular, graph signal processing (GSP) has recently gained momentum for this purpose. In this framework, functional information is regarded as temporal signals on a graph defined from structural measurements, and viewed as a linear combination of eigenmodes. This has the double advantage of enabling the study of structure/function relationships, and of permitting a wide set of signal processing operations in the spectral domain to improve the quality of functional signals. % Why Slepians can be nice: more accurate local decomposition that is also robust to changes in the chosen subset of nodes In such approaches, a similar importance is typically assigned to each brain region (i.e., each node of the studied network) at the decomposition stage. However, in some settings, it may be desirable to enhance the accuracy of the analysis on a subset of particularly important areas (for example, the brain regions expected to respond to a given paradigm). At the same time, some flexibility is also desired when it comes to defining this subset, so that rough prior knowledge be enough information to provide. % Summary of what is to come Here, we show how this can be achieved through a generalised decomposition into Slepian vectors. On simulated data, we show that if provided with a set of nodes of interest, noisy functional signals can be recovered more accurately within this set compared to a standard decomposition. In addition, we show how error estimates are robust to changes in the selected subset. On a real data example, we exemplify the potential of Slepians to reveal subtler, localised interaction patterns in the context of a visual stimulation task. \section{Methods} \label{sec:methods} \subsection{Graph signal processing basics} % Introducing the eigenmodes Let a graph $\mathcal{G} = (\mathcal{V},\mathbf{W})$ characterised by the set of $N$ nodes $\mathcal{V}$, linked as described by the symmetrical adjacency matrix $\mathbf{W} \in \mathbb{R}^{N\times N}$. In the brain application considered here, $w_{i,j}$ will be large if brain regions $i$ and $j$ are strongly physically connected. The resulting Laplacian matrix $\mathbf{L} = \mathbf{D} - \mathbf{W}$, where $\mathbf{D}$ is the diagonal degree matrix with $d_{i,i} = \sum_j w_{i,j}$, admits an eigendecomposition as $\mathbf{L} = \mathbf{V} \mathbf{\Lambda} \mathbf{V^{\top}}$. The matrix $\mathbf{V} = [\mathbf{v_1}|\mathbf{v_2}|\ldots|\mathbf{v_N}]$ contains the eigenmodes as its columns, arranged in ascending eigenvalue order $\lambda_1 < \lambda_2 < \ldots < \lambda_N$. They satisfy $\mathbf{v_k^{\top}} \mathbf{v_l} = \delta_{k,l}$. Because $\lambda_k = \mathbf{v_k}^{\top} \mathbf{L} \mathbf{v_k} = \sum_{i\neq j} W_{i,j} ([v_k]_i - [v_k]_j)^2$, eigenmodes of smaller eigenvalues will represent \textit{low frequency} structural patterns on the graph (i.e., for which strongly connected nodes show similar values), while eigenmodes of larger eigenvalues will denote less organised patterns with respect to the graph structure. % Introducing the GFT -From this description, a signal $\mathbf{x} \in \mathbb{R}^{N\times 1}$ can conveniently be expressed in the graph domain as $\mathbf{\hat{x}} = \mathbf{V^{\top}} \mathbf{x}$, which is known as the \textit{graph Fourier transform}; conversely, we also have $\mathbf{x} = \mathbf{V} \mathbf{\hat{x}}$. Each element of $\mathbf{\hat{x}}$ then represents the strength with which an eigenmode is contributing to the signal at hand. In addition, note that the eigenmodes are also solutions to the Laplacian embedding problem, where the goal is to find a mapping of the graph nodes on a line so that connected ones stay as close as possible, that is, to find $\mathbf{x}$ as: +From this description, a signal $\mathbf{x} \in \mathbb{R}^{N\times 1}$ can conveniently be expressed in the graph domain as $\mathbf{\hat{x}} = \mathbf{V^{\top}} \mathbf{x}$, which is known as the \textit{graph Fourier transform} (GFT); conversely, we also have $\mathbf{x} = \mathbf{V} \mathbf{\hat{x}}$. Each element of $\mathbf{\hat{x}}$ then represents the strength with which an eigenmode is contributing to the signal at hand. + +In addition, note that the eigenmodes are also solutions to the Laplacian embedding problem, where the goal is to find a mapping of the graph nodes on a line so that connected ones stay as close as possible, that is, to find $\mathbf{x}$ as: \begin{equation} \mathbf{x^{*}} = \argmin_\mathbf{x}{\mathbf{x^{\top}} \mathbf{L} \mathbf{x}} = \argmin_\mathbf{x}{\mathbf{x^{\top}} \mathbf{V} \mathbf{\Lambda} \mathbf{V^{\top}} \mathbf{x}}, \end{equation} with $\mathbf{x^{\top}} \mathbf{x} = 1$ and $\mathbf{x^{\top}} \mathbf{1} = 0$. \subsection{Slepian vectors} % Slepians: (1) concentration, (2) generalised Laplacian embedding -The goal is to derive an alternative set of basis vectors, under the constraint that their energy should be localised within a predefined subset of nodes $\mathcal{S}$. Futher, we want this alternative set to be derived from a bandwidth-limited subset of original eigenvectors, with dimension $K\leq N$. To highlight the selected nodes, we define $\mathbf{M}$ as the diagonal matrix with $m_{i,i} = 1$ if a node is included, and $0$ otherwise. Further, we define $\mathbf{V_T} \in \mathbb{R}^{N \times K}$ as the trimmed set of eigenmodes. - +The goal is to derive an alternative set of basis vectors, under the constraint that their energy should be localised within a predefined subset of nodes $\mathcal{S}$. Further, we want this alternative set to be derived from a bandwidth-limited subset of original eigenvectors, with dimension $K\leq N$. To highlight the selected nodes, we define $\mathbf{M}$ as the diagonal matrix with $m_{i,i} = 1$ if a node is included, and $0$ otherwise. Further, we define $\mathbf{V_T} \in \mathbb{R}^{N \times K}$ as the trimmed set of eigenmodes. -If we denote the new set by the matrix $\mathbf{S} = [\mathbf{s_1}|\mathbf{s_2}|\ldots|\mathbf{s_M}]$, and using the equality $\mathbf{\Lambda} = \mathbf{\Lambda}^{1/2} \mathbf{V^{\top}} \mathbf{V} \mathbf{\Lambda}^{1/2}$, Slepian vectors $\mathbf{s_k}$, $k = 1,\ldots,M$ can be seen as the solutions of a generalised Laplacian embedding formulation: +The concentration to optimise is given by $\mu = \frac{\mathbf{\hat{x}^{\top}} \mathbf{C} \mathbf{\hat{x}} }{\mathbf{\hat{x}^{\top}} \mathbf{\hat{x}}}$, where we used $\mathbf{C} = \mathbf{V_T^{\top}} \mathbf{M} \mathbf{V_T}$ and the GFT definition to express $\mathbf{x}$ in the graph domain from the trimmed set $\mathbf{V_T}$. For the analogy with the classical eigenmodes, where $\lambda_i$ represents a spatial frequency on the graph, we consider an alternative formulation where, using the equality $\mathbf{\Lambda} = \mathbf{\Lambda}^{1/2} \mathbf{V^{\top}} \mathbf{V} \mathbf{\Lambda}^{1/2}$, the solution vectors $\mathbf{s_k}$, $k = 1,\ldots,M$ satisfy a generalised Laplacian embedding formulation: \begin{equation} -\mathbf{s^{*}} = \argmin_\mathbf{s}{\mathbf{s^{\top}} \mathbf{V} \mathbf{\Lambda}^{1/2} \mathbf{V^{\top}} \mathbf{S} \mathbf{V} \mathbf{\Lambda}^{1/2} \mathbf{V^{\top}} \mathbf{s}}. +\mathbf{\hat{s}^{*}} = \argmin_\mathbf{\hat{s}}{\mathbf{\hat{s}^{\top}} \mathbf{\Lambda_T}^{1/2} \mathbf{C} \mathbf{\Lambda_T}^{1/2} \mathbf{\hat{s}}}. \end{equation} -Indeed, we retrieve Equation (1) if $\mathbf{V_T} = \mathbf{V}$ and $\mathbf{S} = \mathbf{I}$. +The \textit{local frequency} within $\mathcal{S}$ is denoted $\xi_i$, and the matrix $\mathbf{S} = [\mathbf{s_1}|\mathbf{s_2}|\ldots|\mathbf{s_M}]$ contains the solution vectors, arranged in ascending local frequency ($\xi_1 < \xi_2 < \ldots < \xi_M$). Note that $\xi$ will be low either if $\mathbf{s_i}$ is not concentrated within $\mathcal{S}$, or if it displays a low local frequency. + +\subsection{Evaluations on simulated data} + +We examined how well a simulated ground truth signal $\mathbf{X} \in \mathbb{R}^{N\times T}$ on $\mathcal{G}$, corrupted with noise, could be retrieved on a particular subset of nodes $\mathcal{S}$ through filtering on the graph. For a basis $\mathbf{V}$, it can be expressed by the diagonal matrix $\mathbf{H}$, where $h_{i,i} = 1$ if $\lambda_i < \bar{\lambda}$, with $\bar{\lambda}$ the cutoff frequency. The filtered output $\mathbf{Y} \in \mathbb{R}^{N\times T}$ is then given by $\mathbf{Y} = \mathbf{V} \mathbf{H} \mathbf{V^{\top}} \mathbf{X}$. + +We considered simulated modular graphs of $n_{ROI} = 200$ nodes, with $4$ communities and a minimal community number of $40$ nodes. World density was set to $\frac{1}{n_{ROI}}$. We then created simulated time courses of $900$ time points, where the largest community from the graph was selected as $\mathcal{S}$. Within $\mathcal{S}$, we created two independent temporal paradigms of $180$ time points, each occurring in half of the subset nodes. Each of the other $3$ communities was also assigned a separate paradigm time course. Figure 1A depicts example graph and simulated ground truth time courses. + +To add noise on top of the ground truth time courses, at each time point, a random subset of $n_{r}$ nodes was chosen, and corrupted with noise of intensity $I\sim \mathcal{N}(0,\sigma_r^2)$. Figure 1B depicts example time courses at varying noise levels. + +We assessed the ability of (1) a classical basis of eigenmodes (EIG), (2) a localised eigenmodes decomposition on the subset $\mathcal{S}$ (LEIG), and (3) a Slepian basis focused on the same subset (SLEP) to retrieve the ground truth. We probed ranges of $n_r \in [0:20:200]$ and $sigma_r \in [0:0.5:4]$. In each case, we generated $20$ simulated datasets (both graph structure and time courses), and computed the average mean squared error (MSE) across all nodes within $\mathcal{S}$ across all possible filtering ranges. We selected the minimal MSE across filtering schemes as error measure. Figure 1C summarises those results. + +In addition, we compared the LEIG and SLEP decompositions in their sensitivity to an imperfect subset selection, where for each simulated trial, $\mathcal{S}_i$ ($|\mathcal{S}_i| = 0.2 \mathcal{S}$) was picked as the subset to focus on a total $10$ times, and the mean error across those $10$ subcases was considered. Results are reported in Figure 1D. + +\subsection{Exploratory application to real fMRI data} -% Processing functional signals on the structural basis +To extend our observations on simulated data to the fMRI setting, we consider one subject from the Human Connectome Project initiative (subject 100307), for which we downloaded diffusion MRI, structural MRI and task fMRI (\textit{Working Memory}) data. We created $\mathbf{W}$ from the structural and diffusion data: we used the MRtrix toolbox to generate BLABLA + +BLABLA about the paradigm, where images are actually presented so visual. + +We considered a subset of nodes $\mathcal{S}$ from within the visual cortex (see Figure 2A), and considered the filtered time courses with the EIG, LEIG and SLEP approaches (with respective cutoff parameters BLABLA1, BLABLA2 and BLABLA3). Those were non-linearly dimensionally reduced into a 3D representation (through spectral clustering), in order to evaluate possible differences in brain activations as a function of the type of visual stimulus. Those results are displayed in Figure 2B. \section{Results} \label{sec:results} -\subsection{Simulated data} +\subsection{Evaluations on simulated data} + +[INSERT FANCY FIGURE 1] + +Error goes up both with increased $n_r$ or $\sigma_r$. SLEP gives the best results, in particular at high noise levels. At low noise levels, all approaches are relatively equivalent. At high noise levels, LEIG is the worst. -Quantification of optimal retrieval error for signals corrupted with added noise. +When selecting only a limited subset of nodes as $\mathcal{S}$, LEIG fails much more than SLEP: for LEIG the error goes sky high, for SLEP it remains fairly low and on par with other approaches. This is thanks to the bandwidth (possibility: compute the optimal parameters every time and save them, to check the claim). -Probed across noise levels, across ????? +\subsection{Exploratory application to real fMRI data} -\subsection{Real fMRI data} +[INSERT FANCY FIGURE 2] -HCP example subject on which $W$ and $X$ were computed; visual task, comparison in our subset of interest between GFT and Slepians. +Better separation between the type of presented stimuli with SLEP compared to the two other approaches. Faces/body parts relatively together, places/tools also. Baseline (fixation) clearly separated by all approaches. \section{Discussion} \label{sec:discussion} +GSP tools are gaining a lot of interest in the neuroimaging community, but the strong noise levels at play in the functional data at hand complicate their use. + +Discuss the fact that some types of noise (here, several nodes spanning the whole network activate together, but not following the graph structure; i.e., two very close nodes in the graph are equally likely to activate compared to two remote nodes) can impede the classical GSP tools. Slepians enable to focus the analysis on a limited subpart of the graph, and so, to an extent, get rid of this noise effect. + +Discuss the fact that at the same time, the bandwidth parameter enables more robustness to imperfect node selection, which is nice because in neuroscience, we do not necessarily know all interesting foci of activation beforehand. The thing is that the lower bandwidth enables us to use \textit{structural} information from the graph, in order to facilitate \textit{functional} data processing. In itself, this is a really cool way to combine modalities, which is also an emerging trend. + +Discuss possible follow-up extensions of the framework (e.g., have a set of nodes that we want to be active, and another that we want to be deactive, when defining $\mathbf{M}$. If possible, find other nice applications of those tools... + % Below is an example of how to insert images. Delete the ``\vspace'' line, % uncomment the preceding line ``\centerline...'' and replace ``imageX.ps'' % with a suitable PostScript file name. % ------------------------------------------------------------------------- \begin{figure}[htb] \begin{minipage}[b]{1.0\linewidth} \centering \centerline{\includegraphics[width=8.5cm]{image1}} % \vspace{2.0cm} \centerline{(a) Result 1}\medskip \end{minipage} % \begin{minipage}[b]{.48\linewidth} \centering \centerline{\includegraphics[width=4.0cm]{image2}} % \vspace{1.5cm} \centerline{(b) Results 3}\medskip \end{minipage} \hfill \begin{minipage}[b]{0.48\linewidth} \centering \centerline{\includegraphics[width=4.0cm]{image3}} % \vspace{1.5cm} \centerline{(c) Result 4}\medskip \end{minipage} % \caption{Example of placing a figure with experimental results.} \label{fig:res} % \end{figure} This is an example reference \cite{C2}. % To start a new column (but not a new page) and help balance the last-page % column length use \vfill\pagebreak. % ------------------------------------------------------------------------- \vfill \pagebreak % References should be produced using the bibtex program from suitable % BiBTeX files (here: strings, refs, manuals). The IEEEbib.bst bibliography % style file from IEEE produces unsorted bibliography list. % ------------------------------------------------------------------------- \bibliographystyle{IEEEbib} \bibliography{strings,refs} \end{document}